当前位置:首页 » 编程语言 » python回归源码

python回归源码

发布时间: 2023-12-01 07:08:10

① 如何用python进行线性回归以及误差分析

数据挖掘中的预测问题通常分为2类:回归与分类。

简单的说回归就是预测数值,而分类是给数据打上标签归类。

本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析。

本例中使用一个2次函数加上随机的扰动来生成500个点,然后尝试用1、2、100次方的多项式对该数据进行拟合。

拟合的目的是使得根据训练数据能够拟合出一个多项式函数,这个函数能够很好的拟合现有数据,并且能对未知的数据进行预测。

代码如下:

  • importmatplotlib.pyplot as plt

  • importnumpy as np

  • importscipy as sp

  • fromscipy.statsimportnorm

  • fromsklearn.pipelineimportPipeline

  • fromsklearn.linear_modelimportLinearRegression

  • fromsklearn.

  • fromsklearnimportlinear_model

  • ''''' 数据生成 '''

  • x = np.arange(0,1,0.002)

  • y = norm.rvs(0, size=500, scale=0.1)

  • y = y + x**2

  • ''''' 均方误差根 '''

  • defrmse(y_test, y):

  • returnsp.sqrt(sp.mean((y_test - y) **2))

  • ''''' 与均值相比的优秀程度,介于[0~1]。0表示不如均值。1表示完美预测.这个版本的实现是参考scikit-learn官网文档 '''

  • defR2(y_test, y_true):

  • return1- ((y_test - y_true)**2).sum() / ((y_true - y_true.mean())**2).sum()

  • ''''' 这是Conway&White《机器学习使用案例解析》里的版本 '''

  • defR22(y_test, y_true):

  • y_mean = np.array(y_true)

  • y_mean[:] = y_mean.mean()

  • return1- rmse(y_test, y_true) / rmse(y_mean, y_true)

  • plt.scatter(x, y, s=5)

  • degree = [1,2,100]

  • y_test = []

  • y_test = np.array(y_test)

  • fordindegree:

  • clf = Pipeline([('poly', PolynomialFeatures(degree=d)),

  • ('linear', LinearRegression(fit_intercept=False))])

  • clf.fit(x[:, np.newaxis], y)

  • y_test = clf.predict(x[:, np.newaxis])

  • print(clf.named_steps['linear'].coef_)

  • print('rmse=%.2f, R2=%.2f, R22=%.2f, clf.score=%.2f'%

  • (rmse(y_test, y),

  • R2(y_test, y),

  • R22(y_test, y),

  • clf.score(x[:, np.newaxis], y)))

  • plt.plot(x, y_test, linewidth=2)

  • plt.grid()

  • plt.legend(['1','2','100'], loc='upper left')

  • plt.show()

  • 该程序运行的显示结果如下:

    [ 0. 0.75873781]

    rmse=0.15, R2=0.78, R22=0.53, clf.score=0.78

    [ 0. 0.35936882 0.52392172]

    rmse=0.11, R2=0.87, R22=0.64, clf.score=0.87

    [ 0.00000000e+00 2.63903249e-01 3.14973328e-01 2.43389461e-01

    1.67075328e-01 1.10674280e-01 7.30672237e-02 4.88605804e-02

    ......

    3.70018540e-11 2.93631291e-11 2.32992690e-11 1.84860002e-11

    1.46657377e-11]

    rmse=0.10, R2=0.90, R22=0.68, clf.score=0.90

② 求python多元支持向量机多元回归模型最后预测结果导出代码、测试集与真实值R2以及对比图代码

这是一个多元支持向量机回归的模型,以下是一个参考的实现代码:
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import svmfrom sklearn.metrics import r2_score
# 模拟数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - np.random.rand(16))
# 分割数据
train_X = X[:60]
train_y = y[:60]
test_X = X[60:]
test_y = y[60:]
# 模型训练
model = svm.SVR(kernel='rbf', C=1e3, gamma=0.1)
model.fit(train_X, train_y)
# 预测结果
pred_y = model.predict(test_X)# 计算R2r2 = r2_score(test_y, pred_y)
# 对比图
plt.scatter(test_X, test_y, color='darkorange', label='data'指敏)
plt.plot(test_X, pred_y, color='navy', lw=2, label='SVR model')
plt.title('R2={:.2f}'.format(r2))
plt.legend()
plt.show()
上面的代码将数据分为训练数据和测试数据,使用SVR模型对训练唯配枝数据进行训练,然后对测试数据进行预测。计算预测结果与真实值的R2,最后卖逗将结果画出对比图,以评估模型的效果。

③ python多元线性回归怎么计算

1、什么是多元线性回归模型?

当y值的影响因素不唯一时,采用多元线性回归模型。

y =y=β0+β1x1+β2x2+...+βnxn

例如商品的销售额可能不电视广告投入,收音机广告投入,报纸广告投入有关系,可以有 sales =β0+β1*TV+β2* radio+β3*newspaper.

2、使用pandas来读取数据

pandas 是一个用于数据探索、数据分析和数据处理的python库

[python]view plain

  • importpandasaspd


  • [html]view plain

  • <prename="code"class="python">#

  • data=pd.read_csv('/home/lulei/Advertising.csv')

  • #displaythefirst5rows

  • data.head()

  • 这里的Advertising.csv是来自Advertising.csv。大家可以自己下载。
  • 上面代码的运行结果:

  • TV Radio Newspaper Sales

  • 0 230.1 37.8 69.2 22.1

  • 1 44.5 39.3 45.1 10.4

  • 2 17.2 45.9 69.3 9.3

  • 3 151.5 41.3 58.5 18.5

  • 4 180.8 10.8 58.4 12.9


  • 上面显示的结果类似一个电子表格,这个结构称为Pandas的数据帧(data frame),类型全称:pandas.core.frame.DataFrame.

    pandas的两个主要数据结构:Series和DataFrame:

  • Series类似于一维数组,它有一组数据以及一组与之相关的数据标签(即索引)组成。

  • DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典。


  • [python]view plain

  • #displaythelast5rows

  • data.tail()

  • 只显示结果的末尾5行
  • TV Radio Newspaper Sales

  • 195 38.2 3.7 13.8 7.6

  • 196 94.2 4.9 8.1 9.7

  • 197 177.0 9.3 6.4 12.8

  • 198 283.6 42.0 66.2 25.5

  • 199 232.1 8.6 8.7 13.4

  • [html]view plain

  • #checktheshapeoftheDataFrame(rows,colums)

  • data.shape

  • 查看DataFrame的形状,注意第一列的叫索引,和数据库某个表中的第一列类似。
  • (200,4)

    3、分析数据

    特征:

  • TV:对于一个给定市场中单一产品,用于电视上的广告费用(以千为单位)

  • Radio:在广播媒体上投资的广告费用

  • Newspaper:用于报纸媒体的广告费用

  • 响应:

  • Sales:对应产品的销量

  • 在这个案例中,我们通过不同的广告投入,预测产品销量。因为响应变量是一个连续的值,所以这个问题是一个回归问题。数据集一共有200个观测值,每一组观测对应一个市场的情况。

    注意:这里推荐使用的是seaborn包。网上说这个包的数据可视化效果比较好看。其实seaborn也应该属于matplotlib的内部包。只是需要再次的单独安装。

    [python]view plain

  • importseabornassns

  • importmatplotlib.pyplotasplt

  • #ots

  • sns.pairplot(data,x_vars=['TV','Radio','Newspaper'],y_vars='Sales',size=7,aspect=0.8)

  • plt.show()#注意必须加上这一句,否则无法显示。

  • [html]view plain

  • 这里选择TV、Radio、Newspaper作为特征,Sales作为观测值

  • [html]view plain

  • 返回的结果:



  • seaborn的pairplot函数绘制X的每一维度和对应Y的散点图。通过设置size和aspect参数来调节显示的大小和比例。可以从图中看出,TV特征和销量是有比较强的线性关系的,而Radio和Sales线性关系弱一些,Newspaper和Sales线性关系更弱。通过加入一个参数kind='reg',seaborn可以添加一条最佳拟合直线和95%的置信带。

  • [python]view plain

  • sns.pairplot(data,x_vars=['TV','Radio','Newspaper'],y_vars='Sales',size=7,aspect=0.8,kind='reg')

  • plt.show()


  • 结果显示如下:

  • 直到这里整个的一次多元线性回归的预测就结束了。

    6、改进特征的选择
    在之前展示的数据中,我们看到Newspaper和销量之间的线性关系竟是负关系(不用惊讶,这是随机特征抽样的结果。换一批抽样的数据就可能为正了),现在我们移除这个特征,看看线性回归预测的结果的RMSE如何?

    依然使用我上面的代码,但只需修改下面代码中的一句即可:

    [python]view plain

  • #

  • feature_cols=['TV','Radio','Newspaper']

  • #

  • X=data[feature_cols]

  • #

  • #X=data[['TV','Radio','Newspaper']]#只需修改这里即可<prename="code"class="python"style="font-size:15px;line-height:35px;">X=data[['TV','Radio']]#去掉newspaper其他的代码不变

  • # print the first 5 rowsprint X.head()# check the type and shape of Xprint type(X)print X.shape

  • 最后的到的系数与测度如下:

    LinearRegression(_X=True, fit_intercept=True, normalize=False)

  • 2.81843904823

  • [ 0.04588771 0.18721008]

  • RMSE by hand: 1.28208957507

  • 然后再次使用ROC曲线来观测曲线的整体情况。我们在将Newspaper这个特征移除之后,得到RMSE变小了,说明Newspaper特征可能不适合作为预测销量的特征,于是,我们得到了新的模型。我们还可以通过不同的特征组合得到新的模型,看看最终的误差是如何的。
  • 备注:

  • 之前我提到了这种错误:
  • 注:上面的结果是由train_test_spilit()得到的,但是我不知道为什么我的版本的sklearn包中居然报错:

  • ImportError Traceback (most recent call last)<ipython-input-182-3eee51fcba5a> in <mole>() 1 ###构造训练集和测试集----> 2 from sklearn.cross_validation import train_test_split 3 #import sklearn.cross_validation 4 X_train,X_test, y_train, y_test = train_test_split(X, y, random_state=1) 5 # default split is 75% for training and 25% for testingImportError: cannot import name train_test_split

  • 处理方法:1、我后来重新安装sklearn包。再一次调用时就没有错误了。

    2、自己写函数来认为的随机构造训练集和测试集。(这个代码我会在最后附上。)

  • 这里我给出我自己写的函数:
  • [python]view plain

  • importrandom

  • [python]view plain

  • <spanstyle="font-family:microsoftyahei;">######自己写一个随机分配数的函数,分成两份,并将数值一次存储在对应的list中##########

  • deftrain_test_split(ylabel,random_state=1):

  • importrandom

  • index=random.sample(range(len(ylabel)),50*random_state)

  • list_train=[]

  • list_test=[]

  • i=0

  • forsinrange(len(ylabel)):

  • ifiinindex:

  • list_test.append(i)

  • else:

  • list_train.append(i)

  • i+=1

  • returnlist_train,list_test

  • ###############对特征进行分割#############################

  • feature_cols=['TV','Radio','Newspaper']

  • X1=data[feature_cols]

④ 求python支持向量机多元回归预测代码

这是一段用 Python 来实现 SVM 多元回归预测的代码示例:
# 导入相关核胡库
from sklearn import datasets
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载数据集
X, y = datasets.load_boston(return_X_y=True)
# 将数据集拆分为训练集和测试改塌拦集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 创建SVM多元回归模型
reg = SVR(C=1.0, epsilon=0.2)
# 训练模型
reg.fit(X_train, y_train)
# 预测结果
y_pred = reg.predict(X_test)
# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
在这段代码中,首先导入了相关的库,包括 SVR 函数衫仔、train_test_split 函数和 mean_squared_error 函数。然后,使用 load_boston 函数加载数据集,并将数据集分为训练集和测试集。接着,使用 SVR 函数创建了一个 SVM 多元回归模型,并使用 fit 函数对模型进行训练。最后,使用 predict 函数进行预测,并使用 mean_squared_error 函数计算均方误差。
需要注意的是,这仅仅是一个示例代码,在实际应用中,可能需要根据项目的需求进行更改,例如使用不同的超参数

⑤ python做逻辑回归 怎么把导入的数据分成x,y

简介
本例子是通过对一组逻辑回归映射进行输出,使得网络的权重和偏置达到最理想状态,最后再进行预测。其中,使用GD算法对参数进行更新,损耗函数采取交叉商来表示,一共训练10000次。
2.python代码
#!/usr/bin/python

import numpy
import theano
import theano.tensor as T
rng=numpy.random

N=400
feats=784
# D[0]:generate rand numbers of size N,element between (0,1)
# D[1]:generate rand int number of size N,0 or 1
D=(rng.randn(N,feats),rng.randint(size=N,low=0,high=2))
training_steps=10000

# declare symbolic variables
x=T.matrix('x')
y=T.vector('y')
w=theano.shared(rng.randn(feats),name='w') # w is shared for every input
b=theano.shared(0.,name='b') # b is shared too.

print('Initial model:')
print(w.get_value())
print(b.get_value())

# construct theano expressions,symbolic
p_1=1/(1+T.exp(-T.dot(x,w)-b)) # sigmoid function,probability of target being 1
prediction=p_1>0.5
xent=-y*T.log(p_1)-(1-y)*T.log(1-p_1) # cross entropy
cost=xent.mean()+0.01*(w**2).sum() # cost function to update parameters
gw,gb=T.grad(cost,[w,b]) # stochastic gradient descending algorithm

#compile
train=theano.function(inputs=[x,y],outputs=[prediction,xent],updates=((w,w-0.1*gw),(b,b-0.1*gb)))
predict=theano.function(inputs=[x],outputs=prediction)

# train
for i in range(training_steps):
pred,err=train(D[0],D[1])

print('Final model:')
print(w.get_value())
print(b.get_value())
print('target values for D:')
print(D[1])
print('prediction on D:')
print(predict(D[0]))

print('newly generated data for test:')
test_input=rng.randn(30,feats)
print('result:')
print(predict(test_input))

3.程序解读
如上面所示,首先导入所需的库,theano是一个用于科学计算的库。然后这里我们随机产生一个输入矩阵,大小为400*784的随机数,随机产生一个输出向量大小为400,输出向量为二值的。因此,称为逻辑回归。
然后初始化权重和偏置,它们均为共享变量(shared),其中权重初始化为较小的数,偏置初始化为0,并且打印它们。
这里我们只构建一层网络结构,使用的激活函数为logistic sigmoid function,对输入量乘以权重并考虑偏置以后就可以算出输入的激活值,该值在(0,1)之间,以0.5为界限进行二值化,然后算出交叉商和损耗函数,其中交叉商是代表了我们的激活值与实际理论值的偏离程度。接着我们使用cost分别对w,b进行求解偏导,以上均为符号表达式运算。
接着我们使用theano.function进行编译优化,提高计算效率。得到train函数和predict函数,分别进行训练和预测。
接着,我们对数据进行10000次的训练,每次训练都会按照GD算法进行更新参数,最后我们得到了想要的模型,产生一组新的输入,即可进行预测。

⑥ 如何用python实现含有虚拟自变量的回归



参考资料:
DataRobot | Ordinary Least Squares in Python

DataRoboe | Multiple Regression using Statsmodels

AnalyticsVidhya | 7 Types of Regression Techniques you should know!



⑦ Python源码是什么意思

源代码是指原始代码,可以是任何语言代码。Python源码就是指编写的最原始程序的代码。运行的软件是要经过编写的,程序员编写程序的过程中需要他们的“语言”。

热点内容
c语言stu 发布:2025-01-25 02:26:56 浏览:316
打疫苗的地方wifi密码是多少 发布:2025-01-25 02:22:35 浏览:467
小学不编程 发布:2025-01-25 02:21:07 浏览:149
编程班的名称 发布:2025-01-25 02:15:57 浏览:147
root锁机序列号算法 发布:2025-01-25 02:14:26 浏览:152
广州万科海上传奇 发布:2025-01-25 02:13:48 浏览:562
空调压缩机结霜了 发布:2025-01-25 02:01:20 浏览:130
怎么给路由器设置代理服务器 发布:2025-01-25 01:54:49 浏览:209
sqlserver的不等于 发布:2025-01-25 01:51:47 浏览:274
ftpup上传三个文件 发布:2025-01-25 01:38:15 浏览:762