sklearn 的使用

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u012319493/article/details/87086972

各种模型的简单使用

from sklearn import datasets
wine = datasets.load_wine()  # 导入数据
X = wine.data    # 特征向量
Y = wine.target  # 标签

import numpy as np
print(np.shape(X), np.shape(Y))

(178, 13) (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))

(142, 13) (36, 13)

# 训练模型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.964789
测试数据上的准确率为:0.972222

# 训练模型2:支持向量机模型
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)))

利用决策树模型训练
训练数据上的准确率为:1.000000
测试数据上的准确率为:0.944444

# 训练模型4:神经网络模型
print("利用神经网络模型训练")
from sklearn.neural_network import MLPClassifier
model = MLPClassifier(alpha=1e-5, hidden_layer_sizes=100, 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)))

利用神经网络模型训练
训练数据上的准确率为:0.964789
测试数据上的准确率为:0.944444

机器学习系统的流程

在这里插入图片描述
其中,特征工程耗时最多。
端到端的学习可省略特征工程,深度学习中会用到。

身高体重预测

import numpy as np

# 身高,体重
data = np.array([[150, 50],
               [152, 52],
               [160, 55],
               [164, 57],
               [165, 58],
               [168, 59],
               [170, 60],
               [171, 61],
               [173, 61],
               [173, 61],
               [176, 63],
               [177, 64],
               [180, 67],
               [183, 70],
               [184, 71]], np.int32)
               
# 提出特征和标签
x = data[:, 0:-1]
y = data[:, 1]
print(np.shape(x), np.shape(y))

(15, 1) (15,)

# 可视化数据
import matplotlib.pyplot as plt
plt.scatter(x, y)
plt.show()

在这里插入图片描述

# 通过线性回归模型拟合给定的数据
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(x, y)
print(model.predict(165))

[52.17218816]

# 把学出来的实线和训练数据可视化在同一个图中
plt.scatter(x, y)
plt.plot(x, model.predict(x))
plt.show()

在这里插入图片描述

交叉验证

逻辑回归的两个重要超参数:惩罚项 penalty 和惩罚项的权重 C。C 越小,惩罚项权重越大。
在这里插入图片描述
为了测试逻辑回归中惩罚项 l1 和 l2 哪个好,采用 k 折交叉验证。

不能用测试数据来引导模型的训练。

将训练数据分成 k 份,每次将其中一份作为验证数据,用验证数据的准确率来衡量模型的好坏。

测试数据是为了验证模型不出现较大偏差。

以下为 4 折交叉验证:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012319493/article/details/87086972