anaconda与python可能不共用库,在conda promote中pip install

sklearn下载数据集

1
2
3
from sklearn.datasets import load_breast_cancer
cancer=load_breast_cancer()
print(cancer.keys())

数据集中有多个key

 

KNN实例

用scikit-learn中的KNN算法

首先将数据分为训练集与测试集

1
2
3
4
5
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
cancer=load_breast_cancer()

X_train,X_test,y_train,y_test=train_test_split(cancer.data,cancer.target,stratify=cancer.target,random_state=66)

然后导入类并将其实例化,并设置邻居个数

1
2
from sklearn.neighbors import KNeighborsClassifier
clf=KNeighborsClassifier(n_neighbors=3)

接下来用fit函数进行分类

用predict函数评估模型好坏

1
2
3
4
5
6
clf.fit(X_train,y_train)
print(clf.predict(X_test))
#记录训练集精度
print(clf.score(X_train,y_train))
#记录泛化精度
print(clf.score(X_test,y_test))

train_test_split参数说明

数据集划分:sklearn.model_selection.train_test_split(*arrays, *options)

主要参数说明:

*arrays:可以是列表、numpy数组、scipy稀疏矩阵或pandas的数据框

  • test_size:可以为浮点、整数或None,默认为None

    ①若为浮点时,表示测试集占总样本的百分比

    ②若为整数时,表示测试样本样本数

    ③若为None时,test size自动设置成0.25

  • train_size:可以为浮点、整数或None,默认为None

    ①若为浮点时,表示训练集占总样本的百分比

    ②若为整数时,表示训练样本的样本数

    ③若为None时,train_size自动被设置成0.75

  • random_state:可以为整数、RandomState实例或None,默认为None

    ①若为None时,每次生成的数据都是随机,可能不一样

    ②若为整数时,每次生成的数据都相同

  • stratify:可以为类似数组或None

    ①若为None时,划分出来的测试集或训练集中,其类标签的比例也是随机的

    ②若不为None时,划分出来的测试集或训练集中,其类标签的比例同输入的数组中类标签的比例相同,可以用于处理不均衡的数据集

    通过简单栗子看看各个参数的作用:

①test_size决定划分测试、训练集比例

②random_state不同值获取到不同的数据集

​ 设置random_state=None运行两次,发现两次的结果不同

③设置stratify参数,可以处理数据不平衡问题

​ 设置stratify=y时,我们发现每次划分后,测试集和训练集中的类标签比例同原始的样本中类标签的比例相同,都为2:3