您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页python调用scikit-learn机器学习

python调用scikit-learn机器学习

来源:爱玩科技网
python调⽤scikit-learn机器学习

不⽀持深度学习和强化学习numpy介绍:

np.eye(n)⽣成⼀个n维单元数组

数据预处理:

iris数据加载

from sklearn import datasetsiris = datasets.load_iris()数据展⽰显⽰iris的信息print(iris.data)

[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] ……

[5. 3.6 1.4 0.2] [5.4 3.9 1.7 0.4] [4.6 3.4 1.4 0.3]]

每列数据表⽰不同样本同⼀属性下对⽤的数值print(iris.feature_names)

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

输出⽬标结果print(iris.target)

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]

结果的含义

print(iris.target_names)

['setosa' 'versicolor' 'virginica']

确认数据类型print(type(iris.data))print(type(iris.target))

确认维度

print(iris.data.shape)print(iris.target.shape)

(150, 4)(150,)

X输⼊数据赋值,y输出数据赋值X = iris.datay = iris.target

模型训练:

分类:根据数据集⽬标的特征或属性,划分到已有的类别中常⽤分类算法:KNN(K近邻)、逻辑回归、决策树、朴素贝叶斯

KNN(最简单的机器学习算法之⼀):

给定⼀个训练数据集,对新的输⼊实例,在训练数据集中找到与该实例最邻近的l个实例,这k个实例多数是什么类型就将该输⼊实例分类到这个类中模型调⽤

from sklearn.neighbors import KNeighborsClassifier创建实例

knn=KNeighborsClassifier(n_neighbors=5)模型训练模型训练与预测y_pred=knn.fit(X,y)knn.predict(y_pred)准确率

from sklearn.metrics import accuracy_scoreprint(accuracy_score(y,y_pred))数据分离

from sklearn.model_selection import train_test_split

#训练输⼊数据,预测的输⼊数据,训练结果,预测结果

x_train,x_test,y_train,y_test=train_test_split(X,y,test_size=0.4)分离后数据集的训练与评估

knn_5_s = KNeighborsClassifier(n_neighbors=5)knn_5_s.fit(X_train, y_train)

y_train_pred=knn_5_s.predict(X_train)y_test_pred=knn_5_s.predict(X_test)确定k值

k_range=list(range(1,26))

score_train=[]score_test=[]for k in k_range:

knn=KNeighborsClassifier(n_neighbors=k)knn.fit(X_train,y_train)

y_train_pred=knn.predict(X_train)y_test_pred=knn.predict(X_test)

score_train.append(accuracy_score(y_train,y_train_pred))score_test.append(accuracy_score(y_test,y_test_pred))图形展⽰

import matplotlib.pyplot as plt%matplotlib inline

#展⽰k值与训练数据集预测准确率之间的关系plt.plot(k_range,score_test)plt.xlabel('K(KNN model)')plt.ylabel('Training Accuracy')

训练数据集准确率 随着模型复杂⽽提⾼

测试数据集准确率 在模型过于简单或复杂⽽准确率更低

KNN模型中,模型复杂度由K决定,(k越⼩,复杂度越⾼)

对新数据进⾏预测

knn_11=KNeighborsClassifier(n_neighbors=11)knn_11.fit(X_train,y_train)knn_11.predict([[1,2,3,4]])

逻辑回归模型:

⽤于解决分类问题的⼀种模型。根据数据特征或属性,计算其归属于每⼀类别的概率P(x),根据概率数值判断其所属类别。主要应⽤场景:⼆分类问题。

P(x)=1/(1+e-(ax+b))    y={1, P(x)≥0.5  0,P(x)<0.5其中y为类别结果,P为概率,x为特征值,a、b为常量(⽪马印第安⼈糖尿病数据集)

输⼊变量:独⽴变量包括患者的怀孕次数,葡萄糖量,⾎压,⽪褶厚度,体重指数,胰岛素⽔平,糖尿病谱系功能,年龄输出结果:是否含义糖尿病

数据来源:Pima Indians Dianbetes dataset

预测准确率的局限性:

⽆法真实反映模型针对各个分类的预测准确度

准确率可以⽅便的⽤于衡量模型的整体预测效果,但⽆法反应细节信息,具体表现:

没有体现数据的实际分布情况没有体现模型错误预测的类型

空准确率:当模型总是预测⽐例较⾼的类别,其预测准确率的数值

混淆矩阵(误差矩阵):

⽤于衡量分类算法的准确程度

True Positives(TP):预测准确、实际为正样本的数量(实际为1,预测为1)True Negatives(TN):预测准确、实际为负样本的数量(实际为0,预测为0)False Positives(FP):预测错误、实际为负样本的数量(实际为0,预测为1)False Negatives(FN):预测错误、实际为正样本的数量(实际为1,预测为0)

准确率

整体样本中,预测正确的⽐例

公式

定义

(Accuracy)

错误率(Misclassification Rate)

召回率

整体样本中,预测错误的⽐例

正样本中,预测正确的⽐例

(Recall)特异度(Specificity)

精确率(Precision)

F1分数(F1 Score)

混淆矩阵指标特点:

分类任务中,相⽐单⼀的预测准确率,混淆矩阵提供了更全⾯的模型评估信息通过混淆矩阵,我们可以计算出多样性的模型表现衡量指标,从⽽更好地选择模型哪个衡量指标更关键?

衡量指标的选择取决于应⽤场景

垃圾邮件检测(正样本判断为“垃圾邮件”):希望普通邮件(负样本)不要被判断为垃圾邮件(正样本),需要关注精确率和召回率异常交易检测(正样本为“异常交易”):希望所有的异常交易都被检测到,需要关注特异度

#数据预处理import pandas as pdpath='csv⽂件路径/xxx.csv'pima=pd.read_csv(path)#X,y赋值

feature_names=['pregnant','insulin','bmi','age']X=pima[feature_names]y=pima.label#维度确认

print(X.shape,y.shape)#数据分离

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0)#模型训练

from sklearn.linear_model import LogisticRegressionlogreg=LogisticRegression()logreg.fit(X_train,y_train)#测试数据集结果预测y_pred=logreg.predict(X_test)#使⽤准确率进⾏评估from sklearn import metrics

预测结果为正样本中,预测正确的⽐例

负样本中,预测正确的⽐例

综合Precision和Recall的判断指标

print(metrics.accuracy_score(y_test,y_pred))#确认正负样本数据量y_test.value_counts()#1的⽐例y_test.mean()#0的⽐例1-y_test.mean()#空准确率

max(y_test.mean(),1-y_test.mean())

#四个因⼦赋值

cofusion=metrics.confusion_matrix(y_test,y_pred)TN=confusion[0,0]FP=confusion[0,1]FN=confusion[1,0]TP=confusion[1,1]print(TN,FP,FN,TP)/*指标计算参见上⾯的公式*/

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务