一、机器学习系统搭建流程
-
原始数据
- 文本
- 图像
- 语音
- 数据预处理
- 特征工程 (向量/矩阵)
- 建模
- 预测
备注: 机器学习系统中,端到端的学习(End to end learning)
二、机器学习算法:
- 监督学习(Supervised)
-
回归(Regression)
- Linear Regression
- Support Vector Regression
- Neural Network
- ···
-
分类(Classify)
- Logical Regression
- Decision Tree
- Random Forest
- Neural Network
- Deep Neural Network
- 非监督学习(Unsupervised)
-
聚类
- Kmeans
- GMM
- LDA(文本)
三、sklearn
sklearn
官网:https://scikit-learn.org/stable/user_guide.html
sklearn
是机器学习领域中最为常用的库(library),它包含了几乎所有能找到的机器学习算法,而且非常高效
- 导入样本数据
# 导入样本数据
from sklearn import datasets
import numpy as np
wine = datasets.load_wine()
# print(wine)
X = wine.data
y = wine.target
print(np.shape(X), np.shape(y))
-
数据分配
# 把数据分成训练数据和测试数据
from sklearn.model_selection import train_test_split
# test_size:通常设为 0.2\、0.15、0.25
# random_state: 类似seed
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=49)
print(np.shape(X_train), np.shape(y_train))
print(np.shape(X_test), np.shape(y_test))
-
模型训练
训练方法 1: 逻辑回归
print('逻辑回归模型训练:')
from sklearn.linear_model import LogisticRegression
model = LogisticRegression().fit(X_train, y_train)
print('训练数据上的准确率:%f' % (model.score(X_train, y_train)) )
print('测试数据上的准确率:%f' % (model.score(X_test, y_test)))
>>> 逻辑回归模型训练:
>>> 训练数据上的准确率:0.971831
>>> 测试数据上的准确率:0.972222
训练方法 2: 支持向量机
print('支持向量机模型训练:')
from sklearn.svm import SVC
model = SVC().fit(X_train, y_train) # gamma='auto'
print('训练数据上的准确率:%f' % (model.score(X_train, y_train)) )
print('测试数据上的准确率:%f' % (model.score(X_test, y_test)))
>>> 支持向量机模型训练:
>>> 训练数据上的准确率:1.000000
>>> 测试数据上的准确率:0.527778
训练方法 3: 决策树
print('决策树模型训练:')
from sklearn import tree
model = tree.DecisionTreeClassifier().fit(X_train, y_train)
print('训练数据上的准确率:%f' % (model.score(X_train, y_train)))
print('测试数据上的准确率:%f' % (model.score(X_test, y_test)))
>>> 决策树模型训练:
>>> 训练数据上的准确率:1.000000
>>> 测试数据上的准确率:0.916667
训练方法 4: 神经网络
print('神经网络模型训练:')
from sklearn.neural_network import MLPClassifier
# model = MLPClassifier(alpha=1e-5, hidden_layer_sizes=(200))
model = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(200, ),
random_state=2)
model.fit(X_train, y_train)
print('训练数据上的准确率:%f' % (model.score(X_train, y_train)))
print('测试数据上的准确率:%f' % (model.score(X_test, y_test)))
>>> 神经网络模型训练:
>>> 训练数据上的准确率:0.950704
>>> 测试数据上的准确率:0.972222