from sklearn.datasets import load_iris
# 导入鸢尾花数据并查看数据特征
iris_dataset = load_iris() # 字典
print(iris_dataset.keys())
print(iris_dataset['feature_names']) # sepal花萼 petal花瓣
print(iris_dataset['data']) # 获取属性
print(iris_dataset['data'].shape) # 查看数据结构
print(iris_dataset['data'][:5]) # 查看前5条数据
# 查看分类信息
print(iris_dataset['target_names']) # 标记名
print(iris_dataset['target']) # 标记类型
print(iris_dataset['target'].shape) # 标记维度
print(iris_dataset['DESCR']) # 查看数据集的简介
# 对iris数据集进行拆分
from sklearn.model_selection import train_test_split
# Xtrain 输入训练集,Xtest输入测试集
# Ytrain 输出训练集,Ytrain输出测试集
iris_Xtrain, iris_Xtest, iris_ytrain, iris_ytest = train_test_split(iris_dataset['data'], iris_dataset['target'],
test_size = 0.2, random_state=0)
# 查看拆分后的数据集
print('X_train', iris_Xtrain)
print('X_test', iris_Xtest)
print('y_train', iris_ytrain)
print('y_test', iris_ytest)
print('X_train shape: {}'.format(iris_Xtrain.shape))
print('X_test shape: {}'.format(iris_Xtest.shape))
import pandas as pd
# 将训练集数据转换成dataframe格式
iris_dataframe = pd.DataFrame(iris_Xtrain, columns=iris_dataset.feature_names)
# 绘制散点矩阵图
# 矩阵的第 i行、第 j列中的子图是 X 的第 i列相对于 X 的第 j列的散点图。沿对角线方向是 X 的每一列的直方图
# c color 即花的不同分类
# figsize,以英寸为单位的图像大小,一般以元组 (width, height) 形式设置
# marker。Matplotlib可用的标记类型,如’.’,’,’,’o’等
# alpha 透明度
# s 散点的大小
pd.plotting.scatter_matrix(iris_dataframe, c=iris_ytrain, figsize=(15,15), marker='o', hist_kwds={'bins':20}, s=60, alpha=0.8)
from sklearn.neighbors import KNeighborsClassifier
# 分类器初始化
for i in range(1,11):
knn = KNeighborsClassifier(n_neighbors=i)
# 对训练集进行训练
knn.fit(iris_Xtrain, iris_ytrain)
# 对测试集数据的鸢尾花类型进行预测
predict_y = knn.predict(iris_Xtest)
# print('测试集大小:', iris_Xtest.shape)
# print('真实结果:', iris_ytest)
# print('预测结果:', predict_y)
# 显示预测精确率 结果中正确的占多少
# 内部计算是按照predict()函数计算的结果记性计算的。
print('k值', i, '预测精确率:', knn.score(iris_Xtest, iris_ytest))
python机器学习入门上课代码记录1
于 2022-10-22 10:07:05 首次发布