《机器学习》——鸢尾花学习小结

《机器学习》——鸢尾花学习小结

前言

**已知:**一组鸢尾花数据:花瓣的长度x1,宽度x2,花萼的长度x3和宽度x4以及鸢尾花的品种Y。
**目标:**通过机器学习算法对已知x1,x2,x3,x4数值的鸢尾花品种进行分类。

部分数据如下:
《机器学习》——鸢尾花学习小结_第1张图片
注:5.1,3.5,1.4,0.2分别为x1,x2,x3,x4数值,Iris-setosa为Y值

代码

一、导入数据
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pandas as pd

#导入数据
iris_dataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
 iris_dataset['data'], iris_dataset['target'], random_state=0)#train_test_split 函数利用伪随机数生成器将数据集打乱
print("X_train shape: {}".format(X_train.shape))#输出X_train矩阵的大小

输出: X_train shape: (112, 4)

二、观察数据
#画图
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
grr = pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o',
 hist_kwds={'bins': 20}, s=60, alpha=.8)

输出:《机器学习》——鸢尾花学习小结_第2张图片
注:部分截图

三、构建knn聚类
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

#训练数据
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

#预测结果
X_new = np.array([[5, 2.9, 1, 0.2]])
prediction = knn.predict(X_new)
print("Predicted target name: {}".format(iris_dataset['target_names'][prediction]))

输出:Predicted target name: [‘setosa’]

四、给出预测精度
y_pred = knn.predict(X_test)
print("Test set predictions:\n {}".format(y_pred))
print("Test set score: {:.2f}".format(knn.score(X_test, y_test)))#计算正确率

输出:Test set predictions:
[2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0
2]
Test set score: 0.97

五、参考书目

图灵程序设计丛书《python机器学习基础教程》

你可能感兴趣的:(python,机器学习,数据分析)