1. 首页
  2. 技术文章

Python中的机器学习算法一

a、线性回归

线性回归是Python中的一种有监督机器学习算法,它观察连续特征并预测结果。取决于它是在单个变量上运行还是在许多特性上运行,我们可以称之为简单线性回归或多重线性回归。

Python中的机器学习算法一

这是最流行的Python-ML算法之一,常常被低估。它为变量分配最佳权重,以创建一条ax+b线来预测输出。我们经常使用线性回归来估计实际价值,比如基于连续变量的电话数和房屋成本。回归线是拟合Y=a*X+b来表示自变量和因变量之间关系的最佳直线。

你知道Python机器学习环境的设置吗

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> from sklearn import datasets,linear_model
>>> from sklearn.metrics import mean_squared_error,r2_score
>>> diabetes=datasets.load_diabetes()
>>> diabetes_X=diabetes.data[:,np.newaxis,2]
>>> diabetes_X_train=diabetes_X[:-30] #splitting data into training and test sets
>>> diabetes_X_test=diabetes_X[-30:]
>>> diabetes_y_train=diabetes.target[:-30] #splitting targets into training and test sets
>>> diabetes_y_test=diabetes.target[-30:]
>>> regr=linear_model.LinearRegression() #Linear regression object
>>> regr.fit(diabetes_X_train,diabetes_y_train) #Use training sets to train the model

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

>>> diabetes_y_pred=regr.predict(diabetes_X_test) #Make predictions 
>>> regr.coef_

array([941.43097333])
>>> mean_squared_error(diabetes_y_test,diabetes_y_pred)

3035.0601152912695

>>> r2_score(diabetes_y_test,diabetes_y_pred) #Variance score

0.410920728135835

>>> plt.scatter(diabetes_X_test,diabetes_y_test,color ='lavender')
<matplotlib.collections.PathCollection object at 0x0584FF70>
>>> plt.plot(diabetes_X_test,diabetes_y_pred,color='pink',linewidth=3)
[<matplotlib.lines.Line2D object at 0x0584FF30>]
>>> plt.xticks(())
([], <a list of 0 Text xticklabel objects>)
>>> plt.yticks(())
([], <a list of 0 Text yticklabel objects>)
>>> plt.show()
Python中的机器学习算法一

b、 逻辑回归
 Logistic回归是一种有监督分类,是Python中唯一的机器学习算法,用于估计离散值,如0/1、yes/no和true/false。这是基于一组给定的自变量。我们使用逻辑函数来预测一个事件的概率,这给了我们一个介于0和1之间的输出。
 虽然上面写着“回归”,但这实际上是一种分类算法。Logistic回归将数据拟合到logit函数中,也称为logit回归。我们来画这个。


>>> import matplotlib.pyplot as plt
>>> from sklearn import linear_model
>>> xmin,xmax=-7,7 #Test set; straight line with Gaussian noise
>>> n_samples=77
>>> np.random.seed(0)
>>> x=np.random.normal(size=n_samples)
>>> y=(x>0).astype(np.float)
>>> x[x>0]*=3
>>> x+=.4*np.random.normal(size=n_samples)
>>> x=x[:,np.newaxis]
>>> clf=linear_model.LogisticRegression(C=1e4) #Classifier
>>> clf.fit(x,y)
>>> plt.figure(1,figsize=(3,4))
<Figure size 300x400 with 0 Axes>
>>> plt.clf()
>>> plt.scatter(x.ravel(),y,color='lavender',zorder=17)

<matplotlib.collections.PathCollection object at 0x057B0E10>
>>> x_test=np.linspace(-7,7,277)
>>> def model(x):
         return 1/(1+np.exp(-x))
>>> loss=model(x_test*clf.coef_+clf.intercept_).ravel()
>>> plt.plot(x_test,loss,color='pink',linewidth=2.5)

[<matplotlib.lines.Line2D object at 0x057BA090>]

>>> ols=linear_model.LinearRegression()
>>> ols.fit(x,y)

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

>>> plt.plot(x_test,ols.coef_*x_test+ols.intercept_,linewidth=1)

[<matplotlib.lines.Line2D object at 0x057BA0B0>]


New AI Can Sniff Out 50 Cancers in Blood


>>> plt.axhline(.4,color='.4')
<matplotlib.lines.Line2D object at 0x05860E70>
>>> plt.ylabel('y')
Text(0,0.5,’y’)
>>> plt.xlabel('x')
Text(0.5,0,’x’)
>>> plt.xticks(range(-7,7))
>>> plt.yticks([0,0.4,1])
>>> plt.ylim(-.25,1.25)
(-0.25, 1.25)
>>> plt.xlim(-4,10)
(-4, 10)
>>> plt.legend(('Logistic Regression','Linear Regression'),loc='lower right',fontsize='small')
<matplotlib.legend.Legend object at 0x057C89F0>
>>> plt.show()

Python中的机器学习算法一
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code