目录
实现流程与相关代码
-
- 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:可视化描述
- 整体上看data之间的关系
iris_all=data_features.copy()#生成副本防止对原始数据修改 iris_all['target']=data_target sns.pairplot(data=iris_all,hue='target')
-
箱型图 查看各特征的异常值,最大值,中位数,最小值
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的学习
- 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补充
- xlim 链接
- grid 网格线设置
- contour https://www.jianshu.com/p/487b211d3c37 https://blog.csdn.net/Mr_Cat123/article/details/80677525
- Sean born https://zhuanlan.zhihu.com/p/24464836
- annatate https://blog.csdn.net/qq_30638831/article/details/79938967
- scatter参数详解 https://blog.csdn.net/qiu931110/article/details/68130199