机器学习保存与导入训练模型

当我们训练好一个模型后,下次如果还想要使用这个模型。那么我们可以将这个模型保存下来,下次使用的时候直接导入就可以了,这样节省了时间,不用每次都重头训练数据,程序运行速度更快。

这里我们使用sklearn提供的模块joblib来保存模型。

from sklearn.linear_model import LinearRegression
from sklearn.externals import joblib
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split


#获取数据
lb = load_boston()

#分割数据集到训练集和测试集
x_train,x_test,y_train,y_test = train_test_split(lb.data,lb.target,test_size=0.25)

#特征值和目标值是都必须进行标准化处理,实例化两个标准化API
std_x = StandardScaler()

x_train = std_x.fit_transform(x_train)
#用转化训练集的标准归一化测试集
x_test = std_x.transform(x_test)

#目标值
std_y = StandardScaler()

# -1表示系统自动计算行数,1表示列数
y_train = std_y.fit_transform(y_train.reshape(-1,1))
y_test = std_y.transform(y_test.reshape(-1,1))

#正规方程求解方式预测结果
lr = LinearRegression()

#训练模型
lr.fit(x_train,y_train)

#保存训练好的模型
joblib.dump(lr,'test.pkl')

#载入模型
lr = joblib.load('test.pkl')




使用朴素贝叶斯时,保存与导入模型的方法。

from sklearn.datasets import fetch_20newsgroups

#加载20newsgroups数据源,里面主要是英文报刊杂志的文章整理
#categories致命要加载的文章类别,sunset指明要加载训练集
categories = ['alt.atheism','soc.religion.christian','comp.graphics','sci.med']
twenty_train = fetch_20newsgroups(subset='train',categories=categories)

#计算所有文章的TFIDF
tfidf_transformer = TfidfVectorizer()

X_train_tfidf = tfidf_transformer.fit_transform(twenty_train.data)


# 构建多项式朴素贝叶斯模型
#创建对象 alpha:平滑参数
clf = MultinomialNB(alpha=1.0)

#训练
clf.fit(X_train_tfidf,twenty_train.target)

# 保存模型
joblib.dump(tfidf_transformer,'tfidf_model.pkl')
joblib.dump(clf,'clf_model.pkl')

# 载入模型
clf = joblib.load('clf_model.pkl')
tfidf_transformer = joblib.load('tfidf_model.pkl')


 

 

 

 

 

 

你可能感兴趣的:(机器学习)