天池机器学习教程----逻辑回归的学习

目录

实现流程与相关代码

sklearn相关API的学习

matplotlib&&seaborn补充


实现流程与相关代码

    • Step1:库函数导入
    • from sklearn import datasets
      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      import seaborn as sns
      from sklearn.linear_model import LogisticRegression
      

    • Step2:数据读取/载入
    • data_iris=datasets.load_iris()
      type(data_iris) 
      data_target=data_iris.target #目标
      data_target
      data_features=pd.DataFrame(data=data_iris.data,columns=data_iris.feature_names) #将其转化为dataframe数据结构  data.iris.data 特征
      
      data_features.head() #查看前5行

    • Step3:数据信息简单查看
    • data_features.head()
      data_features.info() #可以看看是否有空值
      data_features.info  #详细的信息
      pd.value_counts(data_target) #看看每个种类的数量
      data_features.describe()

    • Step4:可视化描述
  1. 整体上看data之间的关系
    iris_all=data_features.copy()#生成副本防止对原始数据修改
    iris_all['target']=data_target
    
    sns.pairplot(data=iris_all,hue='target')

  2. 箱型图 查看各特征的异常值,最大值,中位数,最小值

    for col in data_features.columns:
        sns.boxplot(x='target',y=col,data=iris_all) #x和y的名字不是随便取的  而是dataframe每一列的名称
        plt.title(col) #设置标题title
        plt.show()
    #异常值 最大值 中位数 最小值

    • Step5:利用 逻辑回归模型 在二分类上 进行训练和预测
    • ##利用逻辑回归模型 在二分类上训练和预测
      from sklearn.model_selection import train_test_split
      
      #选择target为0 1的数据
      iris_feature=data_features.iloc[:100,:]
      iris_target=data_target[:100]
      # iris_target.size
      #训练集大小为0.7 测试集大小为0.3
      x_train,x_test,y_train,y_test=train_test_split(iris_feature,iris_target,test_size=0.3
                                      ,random_state=100)
      
      Clf=LogisticRegression(random_state=100,solver='lbfgs')
      #
      Clf.fit(x_train,y_train) #训练模型
      train_predict=Clf.predict(x_train)
      test_predict=Clf.predict(x_test)
      

  • step5:模型评判 
    from sklearn import metrics
    #利用accuracy(准确度)【预测正确的样本数目占总预测样本数目的比例】评估模型效果
    train_accuracy=metrics.accuracy_score(y_train,train_predict)
    test_accuracy=metrics.accuracy_score(y_test,test_predict)
    print("The train accuracy of the Logistic Regression is:",train_accuracy)
    print("The accuracy of the Logistic Regression is:",test_accuracy)
    #查看混淆矩阵
    ## 查看混淆矩阵 (预测值和真实值的各类情况统计矩阵)
    confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
    print('The confusion matrix result:\n',confusion_matrix_result)
    # 利用热力图对于结果进行可视化
    plt.figure(figsize=(8, 6))
    sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
    plt.xlabel('Predicted labels')
    plt.ylabel('True labels')
    plt.show()

sklearn相关API的学习

  1. train_test_split     

#训练集大小为0.7 测试集大小为0.3

from sklearn.model


x_train,x_test,y_train,y_test=train_test_split(iris_feature,iris_target,test_size=0.3
                                ,random_state=100)

#random_state 设置的原因:随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

# stratify是为了保持split前类的分布。比如有100个数据,80个属于A类,20个属于B类。如果train_test_split(... test_size=0.25, stratify = y_all), 那么split之后数据如下: 
# training: 75个数据,其中60个属于A类,15个属于B类。 
# testing: 25个数据,其中20个属于A类,5个属于B类。 

# 用了stratify参数,training集和testing集的类的比例是 A:B= 4:1,等同于split前的比例(80:20)。通常在这种类分布不平衡的情况下会用到stratify。
 

matplotlib&&seaborn补充

  1. xlim 链接
  2. grid 网格线设置
  3. contour https://www.jianshu.com/p/487b211d3c37     https://blog.csdn.net/Mr_Cat123/article/details/80677525
  4. Sean born  https://zhuanlan.zhihu.com/p/24464836
  5. annatate https://blog.csdn.net/qq_30638831/article/details/79938967
  6. scatter参数详解 https://blog.csdn.net/qiu931110/article/details/68130199
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值