引言
-
机器学习是从数据中提取知识。
-
监督学习(supervised learning): 已知 input & output.
-
无监督学习:已知 input.
- 样本 sample:每个实体或每一行。
- 特征 feature:每一列(用来描述这些实体的属性)。
- 特征提取(特征工程):如何构建良好的数据表征。
1.1 python 相关
- python 有用于数据加载、可视化、统计、自然语言处理、图像处理等各种功能的库。
- 机器学习和数据分析本质都是迭代过程。
1.2 鸢尾花实例
- 熟悉 数据集
from sklearn.datasets import load_iris
iris_dataset = load_iris();
# DESCR 是对应值数据集的简要说明
print ("keys of iris_dataset: \n{}".format(iris_dataset.keys()));
print (iris_dataset['DESCR'][:193] + "\n...");
print ("Target names: {}".format(iris_dataset["target_names"]));
print ("feature_names {}".format(iris_dataset["feature_names"]))
print ("data: {}".format(iris_dataset["data"].shape))
print ("target: {}".format(iris_dataset["target"]))
- 数据集构建散点图
from matplotlib.pyplot import fignum_exists
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import matplotlib.pyplot as plt
import mglearn
iris_dataset = load_iris();
# print("iris dataset: {}".format(iris_dataset.feature_names))
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0);
# ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
iris_dataframe = pd.DataFrame(X_train, columns = iris_dataset.feature_names);
pd.plotting.scatter_matrix(iris_dataframe, c = y_train, figsize=(15, 15), marker='o', hist_kwds={'bins': 20}, s = 60, alpha=.8, cmap = mglearn.cm3)
plt.show();
1.3 模型构建
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
iris_dataset = load_iris();
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0);
1.3.1 K近邻算法
""" k 近邻算法 """
knn = KNeighborsClassifier(n_neighbors=1);
# 返回 knn 对象本身并作原处修改
val = knn.fit(X_train, y_train);
1.3.2 预测
""" 预测 """
# scikit-learn 输入的必须是二维数组
X_new = np.array([[5, 2.9, 1, 0.2]]);
# 预测
prediction = knn.predict(X_new);
print("Prediction:{}".format(prediction)) # 类别 0
print("Predicted target name: {}".format(iris_dataset['target_names'][prediction]))
1.3.3 评估模型
""" 评估模型 """
y_pred = knn.predict(X_test);
print("Test set predictions: {}".format(y_pred));
# 计算测试集精度
print("Test set score: {}".format(np.mean(y_pred == y_test)));
# 计算测试集精度
precise = knn.score(X_test, y_test);
print(precise);
1.4 总结
- 数据集分为 训练集 和 测试集。
- K临近算法:根据新数据点在训练集中距离最近的邻居来进行预测。