机器学习的一般流程:
1、获取数据
2、数据预处理
3、数据集分拆
4、搭建模型
5、模型评估
6、模型保存
接下来,以Sklearn为例,一一介绍。
1、获取数据
1.1、导入数据集:
要想使用sklearn中数据集,必须导入datasets模块:
from sklearn import datasets
iris = datasets.load_iris()
x=iris.data
y=iris.target
1.2、创建数据集:
相关接口如:make_blobs,make_classification,make_regression,make_moons
from sklearn.datasets.samples_generator import make_classification
x,y = make_classificatoin(n_samples=6,n_features=5,n_informative=2,n_redundant=2,
n_classes=2,n_cluster_per_class=2,scale=1.0,random_state=20)
2、数据预处理:
数据预处理是机器学习中不可或缺的一环,能使数据更加有效的被模型训练。
from sklearn import preprocessing
2.1、数据归一化
为了提高数据训练的速度和效率,需要在训练前对数据进行归一化。
train_data=[[1.4,2],[2.2,4],[4,5],[6,]]
scaler = preprocessing.StandardScaler().fit(train_data) #基于均值和方差的标准化
scaler = transform(train_data)
scaler = preprocessing.MinMaxScaler(feature_range=(0,1)).fit(train_data) #将特征值归一化到一个固定范围
2.2正则化
正则化的作用是防止过拟合,方法是:先求出样本范数,然后对样本所有元素除以该范数,使用每个样本的范数都为1.
x_norm = preprocessing.normalize(x,norm=‘l2‘)
2.3 Onehot独热编码
onehot编码是对离散特征值的一种编码方式。
onehot_encoder= preprocessing.OneHotEncoder().fit(data)
onehot_encoder.transform(data).toarray()
3、数据集分拆
通常在训练前会把数据集分拆成训练集和验证集, 以便我们在训练完模型后可以对模型进行验证。
from sklearn.mode_selection import train_test_split
train_x,test_x,train_y,test_y = train_test_split(x,y,test_size=0.3,random_state=42)
4、搭建模型
根据业务场景搜集数据,并决定采用什么样的模型。
4.1、线性回归
y=ax+b :a is model.coef_,b is model.intercept_
from sklearn.linear_model import LinearRegression
model = LinearRegression(fit_intercept=True,normalize=False,copy_x=True,n_jobs=1)
4.2、逻辑回归
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(penalty=‘l2‘,dual=False,tol=0.0001,C=1.0,fit_intercept=True,intercept_scaling=1,class_weight=None,random_state =None,solver=‘liblinear‘,max_iter=100,multi_class=‘ovr‘,verbose=0,warm_start=False,n_jobs=1)
4.3 K近邻算法KNN
from sklearn import neighbors
model=neighbors.KNeighborsClassifier(n_neighbors=5,n_jobs=1)
model= neighbors.KNeighborsRegression(n_neighbors=5,n_jobs=1)
4.4 MLP(多层感知机)
from sklearn.neural_network import MLPClassifier
model = MLPClassifier(activation=‘relu‘,solver=‘adam‘,alpha=0.0001)
5、模型评估
5.1、交叉验证
from sklearn.model_selection import cross_val_score
cross_val_score(model,x,y=None,scoring=None,cv=None,n_job2=1)
5.2、检验曲线
from sklearn.model_selection import validation_curve
train_score,test_score = validation_curve(model,x,y,param_name,param_range,cv=None,scoring=None,n_jobs=1)
6、保存模型
我们可以将训练完的模型保存起来,为后续使用作准备。
6.1、保存为pickle
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(test_x)
6.2、joblib
from sklearn.externals import joblib
joblib.dump(model,‘model.pickle‘) #保存模型
model= joblib.load(‘model.pickle‘) #加载模型
原文地址:https://www.cnblogs.com/jimchen1218/p/11429726.html