当前位置: 首页 > news >正文

天池 机器学习算法(一): 基于逻辑回归的分类预测

pytorch实战

课时7 神经网络
  1. MSE的缺点:偏导值在输出概率值接近0或者接近1的时候非常小,这可能会造成模型刚开始训练时,偏导值几乎消失,模型速度非常慢。

  2. 交叉熵损失函数:平方损失则过于严格,需要使用更合适衡量两个概率分布差异的测量函数。
    使用逻辑函数得到概率,并结合交叉熵当损失函数时,在模型效果差的时候学习速度比较快,在模型效果好的时候学习速度变慢。

  3. torch.randint(0,2,(10,))
    报错:torch.randint(0,2,(10))必须要有逗号

  4. x.view()相当于reshape。x.view((-1, 4))当第一个参数为-1时,自动调整为n行4列的张量

  5. 写模型时需要注意:

    • super(LinearNet,self).init()
    • forward(self, X):
  6. 查看模型参数:net.state_dict()

机器学习算法(一): 基于逻辑回归的分类预测

天池学习地址

逻辑回归使用交叉熵作为损失函数,我理解的步骤为:

  1. 初始化w和b,计算所有点的y值。
  2. 利用sigmoid函数将y值转化为属于某一类的概率
  3. 利用交叉熵损失,希望损失最小,不断更新w和b

下面是天池的具体内容:

# 可视化决策边界
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis') # 绘制三点图
plt.title('Dataset')# x割裂成200份,y为100,生成网格矩阵,存储网格矩阵的点,20000个点。画图的时候,不需要一定按照x和y的坐标,使用网格坐标也可
nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim() # 边界的大小
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny)) #x_grid, y_grid的大小都是100*200,计数是从左下到右上# 根据网格矩阵,也就是有20000个点,计算每个点分别为1类和2类的概率,z_proba的结果
''' array([[0.98401648, 0.01598352],[0.98362875, 0.01637125],[0.98323179, 0.01676821],...,[0.01094403, 0.98905597],[0.01068344, 0.98931656],[0.01042899, 0.98957101]]) '''
z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()]) # ravel()将二维合成一维
z_proba = z_proba[:, 1].reshape(x_grid.shape) # 此时z_proba是对应的类别1的预测概率
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue') # 绘制等高线的函数,例如画一座山。XY的坐标,和山的高度plt.show()

下面是分析iris数据集的一般步骤:

  1. 数据集的读取,转化为pandas元素

    iris_target = data.target #得到数据对应的标签
    iris_features = pd.DataFrame(data=data.data, columns=data.feature_names) #利用Pandas转化为DataFrame格式
    
  2. 查看数据集的基本信息:

    # 这些函数是pandas的,所以数据格式为Series和DataFrame
    ## 利用.info()查看数据的整体信息
    iris_features.info()
    ## 进行简单的数据查看,我们可以利用 .head() 头部.tail()尾部
    iris_features.head()
    iris_features.tail()
    ## 其对应的类别标签为,其中0,1,2分别代表'setosa', 'versicolor', 'virginica'三种不同花的类别。
    iris_target
    ## 利用value_counts函数查看每个类别数量
    pd.Series(iris_target).value_counts()
    ## 对于特征进行一些统计描述
    iris_features.describe()
    
  3. 可视化描述:散点和箱线图

    ## 特征与标签组合的散点可视化
    sns.pairplot(data=iris_all,diag_kind='hist', hue= 'target')
    plt.show()
    ## 箱线图
    for col in iris_features.columns:sns.boxplot(x='target', y=col, saturation=0.5,palette='pastel', data=iris_all)plt.title(col)plt.show()
  4. 利用模型进行训练:划分数据集,定义模型,模型训练,打印参数

    ## 划分数据集
    from sklearn.model_selection import train_test_split
    x_train, x_test, y_train, y_test = train_test_split(iris_features_part, iris_target_part, test_size = 0.2, random_state = 2020)
    ## 模型训练
    from sklearn.linear_model import LogisticRegression
    clf = LogisticRegression(random_state=0, solver='lbfgs')
    clf.fit(x_train, y_train)
    clf.coef_
    clf.intercept_
    
  5. 利用模型进行测试,可视化测试结果:预测结果和概率,计算混淆矩阵,利用矩阵和热力图可视化

    ## 测试结果是一个array,类别和概率分别如下
    test_predict = clf.predict(x_test)
    test_predict_proba = clf.predict_proba(x_test)
    ## 正确率计算
    from sklearn import metrics
    print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_test,test_predict))
    ## 查看混淆矩阵
    confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
    # 利用热力图对于结果进行可视化
    plt.figure(figsize=(8, 6))
    sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
    plt.xlabel('Predicted labels')
    plt.ylabel('True labels')
    plt.show()
    
http://www.lryc.cn/news/242831.html

相关文章:

  • 45岁后,3部位“越干净”,往往身体越健康,占一个也要恭喜!
  • Windows安装Hadoop运行环境
  • 软件测试 | MySQL 主键约束详解:保障数据完整性与性能优化
  • 深入了解Linux中的scp命令及高级用法
  • moviepy 视频剪切,拼接,音频处理
  • ubuntu搭建phpmyadmin+wordpress
  • linux网络之网络层与数据链路层
  • python数学建模之Numpy、Pandas学习与应用介绍
  • LiveVIS视图库1400-如何切换数据库?默认使用的数据库是什么?如何切换到Mysql/MariaDB?
  • 【2023.11.24】Mybatis基本连接语法学习➹
  • 如何防止网络被入侵?
  • 【Linux】常见指令及周边知识(一)
  • 【Docker】从零开始:6.配置镜像加速器
  • The Bridge:从临床数据到临床应用(预测模型总结)
  • [极客大挑战 2019]Secret File1
  • 如何评估一个论坛或峰会值不值得参加?
  • 04_使用API_日期和时间
  • 手动实现 git 的 git diff 功能
  • RabbitMQ之MQ的可靠性
  • Navicat 技术指引 | 适用于 GaussDB 的查询编辑器
  • Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
  • (2023码蹄杯)省赛(初赛)第三场真题(原题)(题解+AC代码)
  • 第十二章 : Spring Boot 日志框架详解
  • STM32 -Bin/Hex文件格式解析
  • 【Java 进阶篇】Redis:打开缓存之门
  • Python与设计模式--享元模式
  • 亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(二)
  • 怎么当代课老师教学生
  • 『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询
  • Vue中mvvm的作用