机器学习入门

折月煮酒 提交于 2021-02-16 23:19:48

机器学习

针对经验E和一系列任务T和一定表现的衡量P,如果随着经验E的积累,针对定义好的任务T可以提高其表现P,则说明机器有学习能力

 

Sklearn基本使用

 包含了所有机器学习算法   ——>   分类 回归 非监督分类 数据降维 数据预处理

 

1. 构建机器学习模型

A. 逻辑回归

B. 支持向量机

C. 决策树

D. 神经网络

在给定的数据上做解决分类的问题

导入样本数据

代码:

from sklearn import datasets
wine = datasets.load_wine()
print(wine)

 

补充:y是样本的标签!每个分类的个数是类似的,所以不会存在不平衡的问题!

 

通过numpy包的shape()方法输入datatarget的大小:

 

代码:

import numpy as np
print(np.shape(x),np.shape(y))

 

 

其中,

(178,13)----代表178*13的矩阵【意思是178个样本,每个样本有13个特征(或13个特征矩阵)】

(178,) -----代表长度是178的一个一维向量

 

把数据分成训练数据和测试数据 -----搭建模型后用一种机制评估模型

 代码:

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.2,random_state=42)
print(np.shape(x_train),np.shape(x_test))

 

sklearn搭建  逻辑回归模型  并在数据上训练+测试

 

代码:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
X,y = load_iris(return_X_y=True)
clf = LogisticRegression(random_state=0,solver='lbfgs',multi_class='multinomial').fit(X,y)
clf.predict(X[:2,:])
clf.predict_proba(X[:2,:])
clf.score(X,y)

 

y数据上搭建逻辑回归模型:

1. 加入相应的库

2. 初始化一个逻辑回归模型并训练

3. 评估模型表现

 

代码:

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)))

 

使用逻辑回归提示FutureWarning:Specify a solver to silence warning的解决:

https://cloud.tencent.com/developer/news/397742

 

 

通过sklearn搭建支持向量机模型

 

代码:

import numpy as np
x = np.array([[-1,-1],[-2,-1],[1,1],[2,1]])
y = np.array([1,1,2,2])
from sklearn.svm import SVC
clf = SVC(gamma='auto')
clf.fit(x,y)
print(clf.predict([[-0.8,-1]]))

 

重要参数:

1.kernel ---和函数,任何时候都要用【线性~非线性~】  

2.gamma ----调值至max

 

 代码:

print("利用支持向量机模型来做训练")
from sklearn import svm
model = svm.SVC().fit(x_train,y_train)
print("训练数据上的准确率为:%f" % (model.score(x_train,y_train)))
print("测试数据上的准确率为:%f" % (model.score(x_test,y_test)))

构建决策树模型

 

 代码:

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)))

搭建神经网络模型

 

代码:

print("利用神经网络模型来做训练")
from sklearn.neural_network import MLPClassifier
model = MLPClassifier(alpha=1e-5,hidden_layer_sizes=(200),solver='lbfgs',random_state=1).fit(x_train,y_train)
print("训练数据上的准确率为:%f" % (model.score(x_train,y_train)))
print("测试数据上的准确率为:%f" % (model.score(x_test,y_test)))

 

 

 AI评估方法

准确率

不适合于:不均衡样本 比如90%+   -10%

【即没经过学习,根据现象直接预测】

 

 

精确率+召回率

 

精确率:真正的正样本 / 分类(预测)的总正样本数

召回率:被发现的正样本 / 总真正的正样本数

二者之间互斥!!!! 不可兼得,一个增,另一个必然减 ——> 最佳点!  阈值点

 

练习:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!