版权声明:博客版权所有,转载注明出处。 https://blog.csdn.net/qq_33083551/article/details/88994936
共同学习之作,欢迎讨论,因为个人能力问题,存在诸多不足。共同进步。
目录
一 环境
第一步,去https://www.python.org/官网下载最新的Python。
开发环境用pycharm或者anaconda都行,个人建议两个都下,我是两个都用,但是pycharm涉及到激活码和安装库的问题,懂得人自然懂。
个人使用anaconda
第二步
安装各个库。
go
二 基础知识
本教程会采用下述两个库来实现机器学习算法:
scikit-learn 和 Keras
然后需要的库,或者说个人推荐的库:
- Numpy:用于 Python 的数值处理,最常用的一个库
- PIL:一个简单的图像处理库
- scikit-learn:包含多种机器学习算法
- Kears 和 TensorFlow:懂得人自然懂,import tensorflow as tf!!!
- OpenCV: OpenCV,后续人脸或者图像都会用到
西瓜书的第一个例子就是鸢尾花数据集
来 yuan~~~鸢。
我们可以把这个 Iris(鸢尾花)理解成为helloworld。
class label是花的名字,Iris Setosa,Iris Versicolor and Iris Virginica
然后图中的四个属性分别是
- Sepal length--萼片长度
- Sepal width--萼片宽度
- Petal length--花瓣长度
- Petal width--花瓣宽度
三 任务
根据给定的四个属性,训练一个机器学习模型来正确分类每个样本的类别。
万变不离其中,有句话请诸君静听
- step1:评估你的问题
- step2:准备数据(原始数据、特征提取、特征工程等等)
- step3:检查各种机器学习算法
- step4:检验实验结果
- step5:求索,思考,进一步
go
1.导入需要的库
# -*- coding: utf-8 -*-
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.datasets import load_iris
import argparse
2.数据载入
先设置参数
# 设置参数
ap = argparse.ArgumentParser()
ap.add_argument("-m", "--model", type=str, default="knn", help="type of python machine learning model to use")
args = vars(ap.parse_args())
# 定义一个保存模型的字典,根据 key 来选择加载哪个模型
models = {
"knn": KNeighborsClassifier(n_neighbors=1),
"naive_bayes": GaussianNB(),
"logit": LogisticRegression(solver="lbfgs", multi_class="auto"),
"svm": SVC(kernel="rbf", gamma="auto"),
"decision_tree": DecisionTreeClassifier(),
"random_forest": RandomForestClassifier(n_estimators=100),
"mlp": MLPClassifier()
}
然后载入数据
print("[INFO] loading data...")
dataset = load_iris()
(trainX, testX, trainY, testY) = train_test_split(dataset.data,
dataset.target, random_state=3, test_size=0.25)
这行代码我需要解释一下
dataset直接用的load,库里面自带的
然后用split来划分
75% 数据作为训练集,25% 作为测试集。
3.训练模型
# 训练模型
print("[INFO] using '{}' model".format(args["model"]))
model = models[args["model"]]
model.fit(trainX, trainY)
4.预测
# 预测并输出一份分类结果报告
print("[INFO] evaluating")
predictions = model.predict(testX)
print(classification_report(testY, predictions, target_names=dataset.target_names))
5.结果
我们可以看到,用KNN预测的准确率高达 0.95 也就是95%
我哭了 泥萌呢?
GIT源码地址:
https://github.com/PANBOHE/Beginner-s-Machine-Learning-Introduction-