引言

  • 机器学习是从数据中提取知识。

  • 监督学习(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临近算法:根据新数据点在训练集中距离最近的邻居来进行预测。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐