一个简单的机器学习流程实现

停工不停学,疫情给了我停下来好好学习的机会,值得好好地珍惜。但是,疫情也让我失去了很多,春光无限好,却没有机会领略,实验也搁置下来了。最近的我,对机器学习产生了浓厚的兴趣,跃跃欲试地想要利用机器学习在自己的方向上大干一场…

一、我与机器学习的一面之缘

记忆中第一次接触到“机器学习”这个词汇,应该是在本科上“材料研究方法”这门课时,老师给我们讲到计算机技术的快速发展使得基于大数据、机器学习的方法已经可以应用到材料研究中,加速了材料的研究过程,之后还专门请了计算机系的老师给我们讲了大数据和机器学习的方法,当然是科普性质的讲座,高屋建瓴,并没有非常深入,但是老师给我们讲的一个例子给我留下了深刻的印象,这个例子讲的是利用学生校园卡的消费数据,来判断学生的家庭情况,然后给家庭有困难的学生卡里打入一定的生活补助,这其中涉及到了大数据和机器学习的相关方法。这个例子给我最大的感悟是,机器学习不再是一个toy,而是可以真正应用到现实生活中,让世界变得更好的一个工具。
再到后来和一个信院的同学成为了室友,我们之间的故事说来话长,他也是一个喜欢折腾的人,经历了从化院->数院->信院的转专业过程,有机会再晒他帅照🤭。他也给了我很大的帮助,我经常向他请教编程的一些问题,他也是第一个告诉我打字速度和键盘对于编程很重要的人,虽然他的研究方向不是机器学习,但是也对这个热门的方向有所了解,以致于我毕业后还经常请教他问题。吴恩达机器学习教程是他给我推荐的,这门教程算是我机器学习路上的引路人,帮助我对机器学习原理的理解更加透彻,其中有一句名言是:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已,对于每一个搞机器学习的人都是非常受用的。

二、机器学习流程

吴恩达机器学习教程偏向算法一点,对于应用涉及相对较少,所以又学了黑马程序员的python机器学习系列教程,涉及到更多的工具知识讲解,结合前面的学习的算法,二者相互促进,感觉是最适合自己的学习方式。这篇文章主要是介绍一下机器学习的基本流程,并且通过python的sklearn库简单实现了这一过程。以下是机器学习的基本流程:

  • 1.获取数据
  • 2.数据基本处理
  • 3.特征工程
  • 4.机器学习(模型训练)
  • 5.模型评估

三、python实现

以下是利用sklearn库的鸢尾花数据做的一个简单的机器学习模型,使用的是k近邻算法,属于分类问题(目标值为离散值),以下是代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd


# 1.获取数据
iris_datasets = load_iris()
print(iris_datasets.keys())
iris_data = iris_datasets['data']
iris_target = iris_datasets['target']
iris_frame = iris_datasets['frame']
iris_target_names = iris_datasets['target_names']
iris_feature_names = iris_datasets['feature_names']

pd_iris = pd.DataFrame(data=iris_data, columns=iris_feature_names)
pd_iris['species'] = iris_target

# 2.将数据拆分为训练数据和测试数据
x_train, x_test, y_train, y_test = train_test_split(iris_data, iris_target, test_size=0.2, random_state=22)

# 3.特征值标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)

# 4.模型训练
train_model = KNeighborsClassifier(n_neighbors=9, algorithm='auto')
train_model.fit(x_train, y_train)

# 5.模型评价
y_predict = train_model.predict(x_test)
print("预测结果:", y_predict == y_test)
model_score = train_model.score(x_test, y_test)
print("准确率:", model_score)

以下为运行的结果:
result

程序并不复杂,实现的功能相对简单,并且模型的准确率也不算高,但是这部分代码是一个标准的机器学习过程,可以当作模板使用。