机器学习的要点
- 我想要回答的问题是什么?已经收集到的数据能够回答这个问题吗?
- 要将我的问题表示成机器学习问题,用那种方法最好?
- 我收集的数据是否足够表达我想要解决的问题?
- 我提取了数据的那些特征?这些特征能否实现正确带预测?
- 如何衡量应用是否成功?
- 机械学习解决方案与我的研究中的其他部分是如何相互影响的?
鸢尾花分类
鸢尾花数据集(Iris)是一个经典数据集,它包含在scikit-learn模块中。
特别注意:观察数据
- 构建模型前检查数据有没有包含需要的信息
- 最佳方法:可视化(绘制散点图)

图中可以看出使用四类数据基本可以将三个类别区分开。
k近邻算法(分类)
- 保存完整的训练集
- 给出新的测试点
- 找出离测试点最近的k个邻居
- 以数量最多的类别作为结果
模型评估
- 精度 = 正确数 / 总测试数
总结
- fit
- predict
- score
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 6 20:45:35 2019
@author: k2821
"""
# 导入数据
from sklearn.datasets import load_iris
iris_dataset = load_iris()
# print(iris_dataset['DESCR'])
# 训练数据与测试数据
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], \
iris_dataset['target'], \
random_state=0)
# random_state 可以指定随机种子,以保证每一次随机出来的分配都一样
# train : test = 3:1
# 可视化观察可行性
import pandas as pd
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=0.8)
# 引入k近邻算法
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)
import numpy as np
# 预测实验
X_new = np.array([[5, 2.9, 1, 0.2,],
[5, 2.9, 1, 0.2,],
[5, 2.9, 1, 0.2,],])
y_new = knn.predict(X_new)
#print(iris_dataset['target_names'][y_new])
# 模型评估
y_pred = knn.predict(X_test)
test_score = np.mean(y_pred == y_test)
print('测试精度' + str(test_score))
print('测试精度' + str(knn.score(X_test, y_test)))
网友评论