scikit-learn是常用python工具库,涵盖大多数机器学习算法的实现
sklearn.preprocessing涵盖了绝大部分数据预处理的函数,如对类别型特征处理的LabelEncoder,OneHotEncoder
数据集名称 | 备注 |
---|---|
iris | 花瓣数据集 |
boston | 房价数据集 |
from sklearn import datasets
import numpy as np
#导入框架自带数据集
iris = datasets.load_iris() # 获取花瓣数据集
'''
iris.data # 特征数据
iris.target # 标签数据
'''
若采用“训练集+测试集”的切分方式
首先导入train_test_split模块
train_test_split()有两种划分形式:
1.若数据集是(feature+target)形式,则可按如下划分
df_train, df_test = train_test_split(self.all_data, test_size=0.2, random_state=2021)
2.若数据集将feature与target分开,则可按如下划分
from sklearn.model_selection import train_test_split
X = iris.data[:,:] # 采用所有的特征数据,若单独采用第3-5列可以iris.data[:,[3,5]]
y = iris.target # 标签值
# 70%训练集 + 30%测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
'''
X_train.shape #X训练集shape
X_test.shape #X测试集shape
y_train.shape #Y训练集shape
y_test.shape #y测试机shape
'''
以上两种方式处理结果是一致的,验证方法是保证随机种子一致,观察结果保持一致
skleran标准化的过程,即特征数据减去其均值后,除以其标准差
X _ s t d = x − m e a n ( x ) ) v a r ( x ) X\_std=\frac{x-mean(x))}{var(x)} X_std=var(x)x−mean(x))
得到缩放后的数据更符合正态分布
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
'''
sc.scale_ #可查看标准化后的scale,(均值,标准差)
'''
#获取标准化后的特征数据
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
首先从sklearn库中提取模型后,然后从模型中fit数据
例如感知机模型:
from sklearn.linear_model import Perceptron
ppn = Perceptron(max_iter=5)
ppn.fit(X_train_std,y_train)
'''
ppn.coef_ # 查看wx+b中的w
ppn.interupt_ # 查看wx+b中的b
模型训练好后,就可以检测模型的预测功能了
y_pred = ppn.predict(X_test_std)
'''
y_pred # 预测值的数据标签
y_test # 真实值的数据标签
'''
# 统计误分类的样本个数
print('Wrong predict nums:%d'%(y_pred != y_test).sum())
# 输出模型准确率
from sklearn.metrics import accuracy_score
print('Accuracy:%.2f'% accuracy_score(y_test, y_pred))