数据分析之优化算法与模型持久化
2018-02-10 13:14
393 查看
一、机器学习算法的参数
1.影响准确度 ------优化
2.防止过拟合 ------优化
3.其他参数
二、网格搜索优化参数(参数少,3个以内)
1.原理
它是通过对遍历已定义参数的列表来评估算法的参数,从而找到最有的参数
2.示例
In [11]:from pandas import read_csv import pandas as pd from sklearn.linear_model import Ridge from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import GridSearchCV # 导入数据 pima =pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data',header=None) # 将数据分为输入数据和输出结果 array = pima.values X = array[:, 0:8] Y = array[:, 8] # 算法实例化 model = Ridge() # 设置要遍历的参数 param_grid = {'alpha': [1, 0.1, 0.01, 0.001, 0]} # 通过网格搜索查询最优参数 grid = GridSearchCV(estimator=model, param_grid=param_grid) grid.fit(X, Y) # 搜索结果 print('最高得分:%.3f' % grid.best_score_) print('最优参数:%s' % grid.best_estimator_.alpha)
最高得分:0.280 最优参数:1
三、随机搜索优化参数(参数多,大于3个)
1.原理
随机搜索通过对固定次数的迭代,对算法的参数采用随机采样分布的方式,搜索合适的参数
2.示例
In [10]:from pandas import read_csv from sklearn.linear_model import Ridge from sklearn.model_selection import RandomizedSearchCV from scipy.stats import uniform # 导入数据 pima =pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data',header=None) # 将数据分为输入数据和输出结果 array = pima.values X = array[:, 0:8] Y = array[:, 8] # 算法实例化 model = Ridge() # 设置要遍历的参数 param_grid = {'alpha': uniform()} # 通过网格搜索查询最优参数 grid = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=100, random_state=7) grid.fit(X, Y) # 搜索结果 print('最高得分:%.3f' % grid.best_score_) print('最优参数:%s' % grid.best_estimator_.alpha)
最高得分:0.280 最优参数:0.977989511997
四、通过pickle来序列化和反序列化机器学习的模型
In [14]:# Save Model Using Pickle import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression import pickle url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] test_size = 0.33 seed = 7 X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed) # Fit the model on 33% model = LogisticRegression() model.fit(X_train, Y_train) # save the model to disk filename = 'finalized_model.sav' pickle.dump(model, open(filename, 'wb')) # some time later... # load the model from disk loaded_model = pickle.load(open(filename, 'rb')) result = loaded_model.score(X_test, Y_test) print(result)
0.755905511811
五、通过Joblib来序列化和发序列化机器学习的模型
In [16]:# Save Model Using joblib import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression from sklearn.externals import joblib url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] test_size = 0.33 seed = 7 X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed) # Fit the model on 33% model = LogisticRegression() model.fit(X_train, Y_train) # save the model to disk filename = 'finalized_model.sav' joblib.dump(model, filename) # some time later... # load the model from disk loaded_model = joblib.load(filename) result = loaded_model.score(X_test, Y_test) print(result)
0.755905511811
六、生成模型的技巧
1.python版本保持一致
2.序列化和反序列化版本一致
3.记录算法调参过程
七、git与参考
git :https://coding.net/u/RuoYun/p/Python-of-machine-learning/git/tree/master
参考:https://read.douban.com/column/6939417/
相关文章推荐
- 数据分析——问卷调查从模型到算法
- 数据说的舆情分析的算法模型的建立
- Hadoop链式MapReduce、多维排序、倒排索引、自连接算法、二次排序、Join性能优化、处理员工信息Join实战、URL流量分析、TopN及其排序、求平均值和最大最小值、数据清洗ETL、分析气
- 腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式
- 腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式
- 【数据结构与算法学习笔记】PART1:算法分析(计算,计算模型,大O记号,算法分析,迭代与递归,动态控制)
- 数据分析之通过集成提高算法
- 数据仓库中两种数据模型的分析比较
- Git 数据模型分析-1
- Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技巧
- 数学之路-数据分析进阶-广义线性模型
- 使用weka内置算法分析数据(图形界面操作)
- 超像素经典算法SLIC的代码的深度优化和分析。
- 数据结构与算法分析:Java语言描述 mobi格式
- 数据结构与算法概述及算法分析
- 性能测试用户模型(三):基础数据分析、场景数据
- 怎么去分析数据库表的模型(数据模型)
- [转载] 大数据常用的算法(分类、回归分析、聚类、关联规则)
- 深度 | 朴素贝叶斯模型算法研究与实例分析
- 大数据数据分析的大规模并行处理模型 Big Data Massive Parallel Processing(MPP) Model