数据来源:ecoli数据集,https://sci2s.ugr.es/keel/dataset.php?cod=61
问题描述:通过对细胞7个属性的测量得分,预测蛋白质的定位位点,一共有8个定位点。
模型选择与评估:用cross_val_score实现,返回打分结果,分数越高,性能越好。参数cv,表示几折交叉;参数scroing,常用“neg_mean_absolute_error"(MAE相反数)、”neg_mean_squared_error"、“accuracy"等
from sklearn.model_selection import cross_val_score
scores=cross_val_score(knn,X,y,cv=10,scoring='accuracy') 数据预处理:目标变量离散化,分类问题中,sklearn不能输出字符型变量,要用LabelEncoder先做预处理。
from sklearn.preprocessing import LabelEncoder
le=LabelEncoder() #实例化一个LabelEncoder对象
le.fit(y) #调用fit方法,遍历目标变量y的值
y=le.transform(y) #将字符串变量转化,对应到一个离散型数字上
练习代码如下:
import os
import pandas as pd
from sklearn import neighbors
from sklearn import datasets
from sklearn.model_selection import cross_val_score
os.chdir(r"C:\Users\勤奋的大眼仔\Documents\数据挖掘")
data=pd.read_csv('ecoli.csv')
#输入特征值 Mcg, Gvh, Lip, Chg, Aac, Alm1, Alm2
#输出 Site {cp,im,imS,imL,imU,om,omL,pp}
#数据处理 添加表头属性值
data.columns=["Mcg","Gvh","Lip","Chg","Aac","Alm1","Alm2","Site"]
data.isnull().sum() #查看是否有缺失值
data.shape
le=LabelEncoder()
le.fit(data.Site)
knn=neighbors.KNeighborsClassifier(6,weights='distance')
X=data[data.columns[0:6]]
y=le.transform(data.Site)
scores=cross_val_score(knn,X,y,cv=10,scoring='accuracy')
print(np.mean(scores))
#分类准确率为0.7999132377908719
版权声明:本文为weixin_42652294原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。