简介:
scikit-learn是一个用于机器学习的Python模块,建立在SciPy基础之上。
主要特点:
操作简单、高效的数据挖掘和数据分析
无访问限制,在任何情况下可重新使用
建立在NumPy、SciPy和matplotlib基础上
使用商业开源协议--BSD许可证
scikit-learn安装:(ubuntu版本14.04.1)
安装依赖:
sudo apt-get install build-essential python-dev python-numpy python-setuptools python-scipy libatlas-dev libatlas3-base python-matplotlib
安装pip
sudo apt-get install python-pip
安装scikit-learn
sudo pip install -U scikit-learn
标准库
Classification
1.监督学习
1.1广义线性模型:
1.1.1普通最小二乘法:
无偏估计的
通过计算最小二乘的损失函数的最小值来求得参数得出模型
通常用在观测有误差的情况,解决线性回归问题
求实际观测值与预测值差的平方最小值
数学公式:
是由sklearn.linear_model模块中的LinearRegression类实现回归
LinearRegression的构造方法:
sklearn.linear_model.LinearRegression(fit_intercept=True #默认值为True,表示计算随机变量,False表示不计算随机变量
, normalize=False #默认值为False,表示在回归前是否对回归因子X进行归一化,True表示是
, copy_X=True)
LinearRegression的属性有:coef_和intercept_。coef_存储到的值,与X的维数一致。intercept_存储的值。
LinearRegression的常用方法有:
decision_function(X) #返回X的预测值y
fit(X,y[,n_jobs]) #拟合模型
get_params([deep]) #获取LinearRegression构造方法的参数信息
predict(X) #求预测值 #同decision_function
score(X,y[,sample_weight]) #计算公式为
set_params(**params) #设置LinearRegression构造方法的参数值
参考示例:
from sklearn import linear_model
X= [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
clf = linear_model.LinearRegression()
clf.fit(X, y)
f_
print clf.intercept_
print clf.predict([[3, 3]])
print clf.decision_function(X)
print clf.score(X, y)
_params()
print clf.set_params(fit_intercept = False)
普通最小二乘法的复杂性:
假设影响因素x为一个n行p列的矩阵那么其算法复杂度为假设
缺点:要求每个影响因素相互独立,否则会出现随机误差。
回归用于解决预测值问题
1.1.2 Ridge回归
有偏估计的,回归系数更符合实际、更可靠,对病态数据的拟合要强于最小二乘
数学公式:
>=0,越大,w值越趋于一致
改良的最小二乘法,增加系数的平方和项和调整参数的积
是由sklearn.linear_model模块中的Ridge类实现
Ridge回归用于解决两类问题:一是样本少于变量个数,二是变量间存在共线性
Ridge的构造方法:
sklearn.linear_model.Ridge(alpha=1.0 #公式中的值,默认为1.0
, fit_intercept=True
, normalize=False
, copy_X=True
, max_iter=None #共轭梯度求解器的最大迭代次数
,tol=0.001 #默认值0.001
, solver='auto') #
Ridge回归复杂性:同最小二乘法
使用:
from sklearn import linear_model
X= [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
clf = linear_model.Ridge(alpha = 0.1)
clf.fit(X, y)
f_
print clf.intercept_
print clf.predict([[3, 3]])
print clf.decision_function(X)
print clf.score(X, y)
_params()
print clf.set_params(fit_intercept = False)
调整参数设置():通过广义交叉验证的方式(RidgeCV)设置调整参数
RidgeCV构造方法:
sklearn.linear_model.RidgeCV(alphas=array([ 0.1, 1., 10. ])
, fit_intercept=True
, normalize=False
, scoring=None #交叉验证发生器
,
cv=None
, gcv_mode=None
, store_cv_values=False)
使用示例:
from sklearn import linear_model
X= [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
clf = linear_model.RidgeCV(alpha = [0.1, 1.0, 10.0])
clf.fit(X, y)
f_
print clf.intercept_
print clf.predict([[3, 3]])
print clf.decision_function(X)
print clf.score(X, y)
_params()
print clf.set_params(fit_intercept = False)
1.1.3 Lasso
数学公式:
估计稀疏系数的线性模型
正则化残差适用于参数少的情况,因其产生稀疏矩阵,可用与特征提取
实现类是Lasso,此类用于监督分类
较好的解决回归分析中的多重共线性问题
思想:在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化
使用:clf = linear_model.Lasso(alpha = 0.1)
设置调整参数():
交叉验证:LassoCV(适用于高维数据集)或LassoLarsCV(适合于样本数据比观察数据小很多)
基于模式选择的信息标准:LassoLarsIC(BIC/AIC)
1.1.4 Elastic Net
是一个使用L1和L2训练的线性模型,适合于在参数很少的情况下(如Lasso)并保持Ridge性能的情况,既是多种影响因素依赖与另外一种因素。继承Ridge的旋转稳定性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论