1.总体流程
引入数据集
#1.导入数据
#使用数据集时,以鸢尾花数据集为例
from sklearn.datasets import load_iris
iris=load_iris()
iris.keys()
将数据集转换为DataFram:
import pandas as pd
iris_data=pd.DataFrame(iris.data,columns=iris.feature_names)
iris_data['target']=iris.target_names[iris.target]
iris_data.head(3).append(iris_data.tail(3))
可视化数据
import seaborn as sns
sns.pairplot(iris_data,hue='target',palette='husl')
数据预处理
#参考:https://blog.csdn.net/weixin_45589116/article/details/123921246?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-123921246-blog-124317243.235^v27^pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=2
from sklearn.preprocessing import StandardScaler
X=StandardScaler().fit_transform(iris.data) #关于fit()、fit_transform()和transform()的区别参考上面资料
y=iris.target
数据集划分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=33)
创建模型估计器(estimator)
用于回归的估计器
#线性回归
from sklearn.linear_model import LinearRegression
lr=LinearRegression()
#查看相关帮助:help(LinearRegression)
#支持向量回归SVR
from sklearn.svm import SVR
svr=SVR()
#查看相关帮助:help(SVR)
#kNN用于回归
#参考:https://blog.csdn.net/qq_43671574/article/details/103557073
from sklearn.neighbors import KNeighborsRegressor
knn_reg=KNeighborsRegressor()
用于分类的估计器
#逻辑回归用于分类
from sklearn.linear_model import LogisticRegression #助记:把LinearRegression改成LogisticRegression即可
lgr=LogisticRegression()
#查看相关帮助:help(LogisticRegression)
#支持向量用于分类:使用LinearSVC,只适用于线性可分的数据集,对于大数据集训练非常快,一般作为初始训练的首选
from sklearn.svm import LinearSVC
lsvc=LinearSVC()
#支持向量用于分类:使用SVC,适用于线性可分和不可分的数据集(通过使用核函数),性能不如LinearSVC
from sklearn.svm import SVC
svc=SVC()
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
用训练集训练模型估计器estimator
#根据需要,用具体的上文估计器去替换下面的estimator
#estimator.fit(X_train,y_train)
knn.fit(X_train,y_train)
用模型估计器对测试集数据做预测
#根据需要,用具体的上文估计器去替换下面的estimator
#y_pred=estimator.predict(X_test)
y_pred=knn.predict(X_test)
对模型估计器的学习效果进行评价
#最简单的评估方法:就是调用估计器的score(),该方法的两个参数要求是测试集的特征矩阵和标签向量
#对于回归问题,score()返回的结果就是r2_score,参考\machine learning\Regression.ipynb文件
#对于分类问题,score()返回的结果就是下面的ACC
#根据需要,用具体的上文估计器去替换下面的estimator
#print(estimator.score(X_test,y_test))
print(knn.score(X_test,y_test))
#对于二分类问题,还可以使用metrics子包中的confusion_matrix()、precision_score()、recall_score、accuracy_score()等
#这些方法的参数分别是测试集的真实标签和预测标签
from sklearn import metrics
confusion_matrix = metrics.confusion_matrix(y_test,y_pred) # 混淆矩阵(注意与上面示例的混淆矩阵的图位置并不一一对应)
#recall_score = metrics.recall_score(y_test,y_pred) # 召回率(查全率)=tp/(tp+fn)
#pre_score = metrics.precision_score(y_test,y_pred) # 准确率(查准率)=tp/(tp+fp)
ACC = metrics.accuracy_score(y_test,y_pred) # 准确度ACC=(tp+tn)/(tp+tn+fp+fn)
print(ACC)
#对于多分类问题,还可以使用metrics子包中的classification_report
print(metrics.classification_report(y_test,y_pred,target_names=iris.target_names))