机器学习序幕
随着人工智能的不断发展,机器学习这门技术也越来越重要。为了更深入地理解这门技术,本文利用具体的案例来介绍机器学习的基础内容。同时,通过一个简单的案例开启了学习基于机器学习算法的模型之旅,达到帮助个人理解、梳理所学知识的目的。
一、什么是机器学习?
在不同场景下,我们或多或少总会遇到一些问题,且不同的问题会有不同的解决方案。在处理问题之前,我们首先必须要明确问题本身,并根据具体的问题确定目标。然后,通过使用不同的方法对已知的数据(输入数据)进行处理、分析得到这些数据的相关规律,再根据得到的规律对未知数据进行预测并得到预测结果(输出数据)。其中,为了反馈预测结果的准确性,我们可以添加一些指标去评价所采取方法的优劣。简单地说,机器学习就是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的方法。
二、机器学习的简单应用
1.引入库
代码如下:
import pandas as pd
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.model_selection import KFold
from sklearn import tree
from sklearn import naive_bayes
from sklearn import svm
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.neural_network import MLPClassifier
2.读入数据
代码如下:
## 案例目标:鸢尾花的分类
## 判断指标:精确度(体现在对所有花的判断结果)
data = pd.read_csv('iris_training.csv')
data.columns = ['花瓣长度', '花瓣宽度', '花萼长度', '花萼宽度', 'category']
X = data.iloc[:, 0:4]
Y = data.iloc[:, 4]
k = 10 # 使用10折交叉验证来划分数据集
kf = KFold(n_splits=k, shuffle=True)
3.基于决策树算法的模型
代码如下:
def eval_model(model_name, model):
accuracies = []
i = 0
for train_index, test_index in kf.split(data): # 拆分
x_train, x_test = X.loc[train_index], X.loc[test_index]
y_train, y_test = Y.loc[train_index], Y.loc[test_index]
# 模型选择
model = tree.DecisionTreeClassifier()
# 训练
model.fit(x_train, y_train)
# 预测
y_predict = model.predict(x_test)
# 评估
accuracy = accuracy_score(y_pred=y_predict, y_true=y_test)
accuracies.append(accuracy)
i += 1
print('decision tree', np.mean(accuracies))
采用基于决策树算法的模型得出的每轮预测结果的精确度为:
从最终的训练效果来看,我们采用决策树算法对鸢尾花数据集进行训练得出的平均精度为95%。
4.模型选择
代码如下:
# 模型选择
models = {
'decision tree': lambda: tree.DecisionTreeClassifier(),
'random forest': lambda: RandomForestClassifier(),
'naive bayes': lambda: naive_bayes.GaussianNB(),
'svm': lambda: svm.SVC(),
'GBDT': lambda: GradientBoostingClassifier(),
'MLP': lambda: MLPClassifier(max_iter=1000)
}
for mname, m in models.items():
eval_model(mname, m())
采用随机森林、朴素贝叶斯、支持向量机等算法对鸢尾花数据集进行训练得到的精确度结果分别为:
通过比较基于不同算法的模型精度,我们可以选择较好的模型来对鸢尾花不同属性进行分类。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了实现机器学习算法的简单案例。从该案例中可以得出利用机器学习实现具体案例的基本过程,后续将会详细推导不同算法以及利用实现其他具体案例。