cnn 鸢尾花分类 knn鸢尾花分类_cnn 鸢尾花分类


markdown模式:

找到一张鸢尾花的照片,复制图片地址

输入感叹号、中括号、小括号,然后小括号里面地址放进去

cnn 鸢尾花分类 knn鸢尾花分类_cnn 鸢尾花分类_02


就可将图片执行出来

cnn 鸢尾花分类 knn鸢尾花分类_数据挖掘_03


或者

cnn 鸢尾花分类 knn鸢尾花分类_数据挖掘_04


鸢尾花因为自然环境的不同,所以类别可以细分

cnn 鸢尾花分类 knn鸢尾花分类_分类_05


cnn 鸢尾花分类 knn鸢尾花分类_python_06

X = iris['data']
y = iris['target']
#150代表150个样本,4代表着4个属性:花萼长、宽;花瓣长、宽
X.shape

cnn 鸢尾花分类 knn鸢尾花分类_python_07

#将数据划分,一分为二:一部分用于训练,另一部分用于测试
#将顺序打乱
index = np.arange(150)
index

np.random.shuffle(index)
index
#150个数据将打乱顺序100个取出来,算法学习,留下的50个使用算法预测(验证算法是否可靠)
#应用到实际中,要获取现实中的数据,算法对数据进行分类------->上线:实时进行分类
X_train,X_test = X[index[:100]],X[index[100:]]

y_train,y_test = y[index[:100]],y[index[-50:]]
knn = KNeighborsClassifier(n_neighbors= 5)

knn.fit(X_train,y_train)

y_ = knn.predict(X_test)
#对比,看算法,预测的和真实的结果,是否对应
#对应,大部分正确:算法没问题
#不然,说明算法效果不好
print(y_)
print('----------------------------')
print(y_test)

cnn 鸢尾花分类 knn鸢尾花分类_分类_08


看一下数据类型

cnn 鸢尾花分类 knn鸢尾花分类_数据挖掘_09


算准确率

cnn 鸢尾花分类 knn鸢尾花分类_python_10


或者采用另一种方法计算准确率

cnn 鸢尾花分类 knn鸢尾花分类_python_11

#进行了封装
knn.score(X_test,y_test)

另一种方法

#算法返回的结果,使用变量_接收:约定俗成变量命名规则
proba_ = knn.predict_proba(X_test)
proba_

结果输出

cnn 鸢尾花分类 knn鸢尾花分类_权重_12


鸢尾花有三个分类,分别对应0、1、2

cnn 鸢尾花分类 knn鸢尾花分类_数据挖掘_13


cnn 鸢尾花分类 knn鸢尾花分类_权重_14


鸢尾花类别有三类

cnn 鸢尾花分类 knn鸢尾花分类_数据挖掘_15


cnn 鸢尾花分类 knn鸢尾花分类_python_16


可以把邻居数调成十个计算一下准确率

cnn 鸢尾花分类 knn鸢尾花分类_权重_17

knn = KNeighborsClassifier(n_neighbors= 10)

knn.fit(X_train,y_train)

y_ = knn.predict(X_test)

knn.score(X_test,y_test)

邻居数不一定越多越好也不一定越少越好。

增加权重选项

cnn 鸢尾花分类 knn鸢尾花分类_cnn 鸢尾花分类_18

knn = KNeighborsClassifier(n_neighbors= 5,weights = 'distance')
#weights = 'distance'表示权重是按照距离来计算的,离得越近权重越大,离得越远权重越小

knn.fit(X_train,y_train)

y_ = knn.predict(X_test)

knn.score(X_test,y_test)

cnn 鸢尾花分类 knn鸢尾花分类_python_19


n_jobs = n

#使用n个进程进行实验,当n等于-1时表示使用所有进程进行实验

cnn 鸢尾花分类 knn鸢尾花分类_cnn 鸢尾花分类_20


注意:一般邻居数最好不要超过根号下样本数

如这里100个样本,邻居数最好不超过100**0.5 = 10