#%%
# 使用 jupyter notebook 编写
"""
本章知识目录:
1.Scikit-learn介绍
2.Sklearn的基本功能
3.监督学习
4.无监督学习
5.数据变换
6.使用介绍
7.机器学习主要步骤sklearn应用
8.数据预处理
9.结语
"""
"""
考试:
提供的功能6大部分:分类、回归等等(知道有哪些)
机器学习的主要步骤:采集、清理、学习、测试、预测、显示
数据预处理中的一些工作(任务):缺失值、标准化、连续值变为离散值
掌握的方法:标准化、规范化、缺失值插补、分类特征编码
区分概念并且还要知道这些方法的基本思想、为什么要这么做:
Standardization标准化(scale、standardscale)
归一化
规范化和范数
onehot编码(给一个例子,写出onehot编码形式)
缺失值插补
给一个sklearn的代码,写出每一部分的功能
"""
#%%
"""
Scikit-learn介绍:
SciPy是一个开源的基于Python的科学计算工具包。
基于SciPy,目前开发者针对不同应用领域已经开发出众多的分支版本
他们统一称为Scikits,即SciPy工具包的意思。
在这些版本中专门面向机器学习的就是Scikit-learn
Sklearn的基本功能:
六大功能:分类、回归、聚类、数据降维、模型选择、数据预处理
1.分类
2.回归
3.聚类
4.数据降维
5.模型选择
6.数据预处理
"""
#%%
"""
监督学习:
1.
neighbors:近邻算法
svm:支持向量机
kernel-ridge:核——岭回归
discriminant_analysis:判别分析
linear_model:广义线性模型
2.
ensemle:集成方法
tree:决策树
naive_bayes:朴素贝叶斯
cross_decomposition:交叉分解
gaussian_process:高斯过程
3.
neural_network:神经网络
calibration:概率校准
isotonic:保序回归
feature_selection:特征选择
multiclass:多类多标签算法
"""
# 以上的每个模块都包括多个算法,在调用时直接import即可,譬如:
from sklearn.svm import SVC
svc = SVC()
#%%
"""
无监督学习:
1.
decomposition:矩阵因子分解
cluster:聚类
manifold:流形学习
mixture:高斯混合模型
2.
neural_network:无监督神经网络
density:密度估计
covariance:协方差估计
"""
#%%
"""
数据变换:
1.
feature_extraction:特征抽取
feature_selection:特征选择
preprocess:预处理
2.
random_projection:随机投影
kernel_approximation:核逼近
pipline:管道流(这个严格说不算是数据变换模块)
"""
#%%
"""
使用介绍:
在sklearn里面,我们可以使用完全一样的接口来实现不同的机器学习算法,
通用的流程可以理解如下:
数据加载和预处理
定义分类器(回归器等等),譬如svc = svm.svc()
用训练集对模型进行训练,只需调用fit方法,svc.fit(X_train, y_train)
用训练好的模型进行预测:y_pred=svc.predict(X_test)
对模型进行性能评估:svc.score(X_test, y_test)
"""
#%%
"""
机器学习主要步骤sklearn应用:
1.数据集--导入sklearn数据集(学习用)
2.创建数据集
"""
#%%
# 1.数据集--导入sklearn数据集(学习用)
# sklearn中包含了大量的优质的数据集,可用于学习。
# 要想使用sklearn中的数据集,必须导入datasets模块:
from sklearn import datasets
iris = datasets.load_iris()# 导入数据集
X = iris.data # 获得其特征向量
y = iris.target # 获得样本label
#%%
from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
#使用以后的数据集进行线性回归(这里是波士顿房价数据)
loaded_data=datasets.load_boston()
data_X=loaded_data.data
data_y=loaded_data.target
model=LinearRegression()
model.fit(data_X,data_y)
print(model.predict(data_X[:4,:]))
print(data_y[:4])
#使用生成线性回归的数据集,最后的数据集结果用散点图表示
X,y=datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=10) #n_samples表示样本数目,n_features特征的数目 n_tragets noise噪音(高斯噪音标准差)
plt.scatter(X,y)
plt.show()
#%%
"""
2.创建数据集
除了可以使用sklearn自带的数据集,还可以自己去创建训练样本
sklearn中的samples generator包含的大量创建样本数据的方法:
分类问题的样本生成器:
from sklearn.datasets.samples_generator import make_classification
X, y = make_classification(n_samles=6, n_features=5, n_informative=2, n_redundant=2, n_classes=2, n_clusters_per_class=p2, scale=1.0, random_state=20)
# n_samples:指定样本数
# n_features:指定特征数
# n_classes:指定几分类
# n_redundant:冗余特征数
# random_state:随机种子,使得随机状可重
for x_,y_ in zip(X,y):
print(y_,end=':')
print(x_)
数据预处理:
1.数据预处理阶段是机器学习中不可缺少的一环,
它会使得数据更加有效的被模型或者评估器识别
2.数据预处理包括:降维、数据归一化、特征提取和特征转换(one-hot)等,
这在sklearn里面有很多方法
3.from sklearn import preprocessing
数据归一化:
为了使得训练数据的标准化规则与测试数据的标准化规则同步,
preprocessing中提供了很多Scaler
train_data = [[0, 0], [0, 0], [1, 1], [1, 1]]
# 1. 基于mean和std的标准化
scaler = preprocessing.StandardScaler().fit(train_data) scaler.transform(train_data)
scaler.transform(test_data)
# 2. 将每个特征值归一化到一个固定范围
scaler = preprocessing.MinMaxScaler(feature_range=(0, 1)).fit(train_data) scaler.transform(train_data)
scaler.transform(test_data)
#feature_range: 定义归一化范围,注用()括起来
"""
from sklearn import preprocessing #进行标准化数据时,需要引入包
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets.samples_generator import make_classification
from sklearn.svm import SVC
import matplotlib.pyplot as plt
X,y=make_classification(n_samples=300,n_features=2,n_redundant=0,n_informative=2,random_state=22,n_clusters_per_class=1,scale=100)
#X=preprocessing.minmax_scale(X,feature_range=(-1,1))
X=preprocessing.scale(X)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
clf=SVC()
clf.fit(X_train,y_train)
print(clf.score(X_test,y_test))
plt.scatter(X[:,0],X[:,1],c=y)
plt.show()
"""
数据集拆分:
在得到训练数据集时,通常我们经常会把训练数据集进一步拆分成训练集和验证集,
这样有助于我们模型参数的选取
# 作用:将数据集划分为 训练集和测试集
# 格式:train_test_split(*arrays, **options)
from sklearn.mode_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
#arrays:样本数组,包含特征向量和标签
#test_size:
# float-获得多大比重的测试样本 (默认:0.25)
# int - 获得多少个测试样本
train_size: 同test_size
random_state:
int - 随机种子(种子固定,实验可复现)
shuffle - 是否在分割之前对数据进行洗牌(默认True)
返回
---
分割后的列表,长度=2*len(arrays),
(train-test split)
定义模型:
sklearn为所有模型提供了非常相似的接口,
这样使得我们可以更加快速的熟悉所有模型的用法。
保存模型:
1.可以将我们训练好的model保存到本地,或者放到线上供用户使用
2.保存为pickle文件
3.sklearn自带方法joblib
import pickle
# 保存模型
with open('model.pickle', 'wb') as f:
pickle.dump(model, f)
# 读取模型
with open('model.pickle', 'rb') as f:
model = pickle.load(f)
model.predict(X_test)
===========================================
from sklearn.externals import joblib
# 保存模型
joblib.dump(model, 'model.pickle')
#载入模型
model = joblib.load('model.pickle')
===========================================
"""
#%%
"""
数据预处理:
"""
from sklearn.model_selection import train_test_split
#%%
"""
结语:
剩下的结合考试内容看PPT吧
"""
山东大学Python(14)——Sklearn
猜你喜欢
转载自blog.csdn.net/weixin_43360801/article/details/103404445
今日推荐
周排行