标签: linear-regression

梯度下降算法不会收敛

我正在尝试为斯坦福机器学习讲座(讲座2大约25:00)中解释的梯度下降算法编写一些代码.下面是我最初使用的实现,我认为它已经从讲座中正确复制了,但是当我>8向训练集添加大数字()时它并没有收敛.

我正在输入一个数字X,并且point (X,X)被添加到训练集中,所以此刻,我只是想让它收敛到y=ax+b哪里a=1=theta\[1\]b=0=theta\[0\].训练集是数组xy,其中(x[i],y[i])是一个点.

void train()
{
    double delta;
    for (int i = 0; i < x.size(); i++)
    {
        delta = y[i]-hypothesis(x[i]);
        theta[1] += alpha*delta*x[i];
        theta[0] += alpha*delta*1;
    }
}

void C_Approx::display()
{
    std::cout<<theta[1]<<"x + "<<theta[0]<<" \t "<<"f(x)="<<hypothesis(1)<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我得到的一些结果:我输入一个数字,然后运行train()几次display()

1
0.33616x + 0.33616   f(x)=0.67232
1
0.482408x + 0.482408     f(x)=0.964816
1
0.499381x + 0.499381     f(x)=0.998762
1
0.499993x + …
Run Code Online (Sandbox Code Playgroud)

c++ machine-learning linear-regression

8
推荐指数
1
解决办法
8171
查看次数

6度曲线拟合与numpy/scipy

我对使用6次多项式插值非线性数据有非常具体的要求.我已经看到了numpy/scipy例程(scipy.interpolate.InterpolatedUnivariateSpline),它允许插入最多5度.

即使没有直接的功能,有没有办法在Python中复制Excel的LINEST线性回归算法?LINEST允许6度曲线拟合,但我不想使用Excel做任何事情,因为这个计算是一个更大的Python脚本的一部分.

任何帮助,将不胜感激!

python numpy curve-fitting scipy linear-regression

8
推荐指数
2
解决办法
8214
查看次数

OLS使用statsmodel.formula.api与statsmodel.api

任何人都可以向我解释statsmodel.formula.api中的ols与statsmodel.api中的ols之间的区别吗?

使用来自ISLR文本的广告数据,我使用两者运行了ols,并得到了不同的结果.然后我与scikit-learn的LinearRegression进行了比较.

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
import statsmodels.api as sm
from sklearn.linear_model import LinearRegression

df = pd.read_csv("C:\...\Advertising.csv")

x1 = df.loc[:,['TV']]
y1 = df.loc[:,['Sales']]

print "Statsmodel.Formula.Api Method"
model1 = smf.ols(formula='Sales ~ TV', data=df).fit()
print model1.params

print "\nStatsmodel.Api Method"
model2 = sm.OLS(y1, x1)
results = model2.fit()
print results.params

print "\nSci-Kit Learn Method"
model3 = LinearRegression()
model3.fit(x1, y1)
print model3.coef_
print model3.intercept_
Run Code Online (Sandbox Code Playgroud)

输出如下:

Statsmodel.Formula.Api Method
Intercept    7.032594
TV           0.047537
dtype: float64

Statsmodel.Api Method
TV    0.08325 …
Run Code Online (Sandbox Code Playgroud)

python linear-regression

8
推荐指数
2
解决办法
2万
查看次数

使用Gnuplot进行时间序列的线性回归

我是Gnuplot的忠实粉丝,我在各个项目的研究中都使用它.

最近我想用Gnuplot绘制一些时间序列,如减肥,锻炼结果,气体消耗等.

因此我像x轴一样缩放

set xdata time
set timefmt "%d.%m %Y"
set format x "%d.%m"
Run Code Online (Sandbox Code Playgroud)

现在我想使用fit-function来给我一个线性拟合.我的问题是,如果x轴与时间有关,我就无法工作.

gnuplot time-series linear-regression

7
推荐指数
1
解决办法
3629
查看次数

如何使用C++生成符合2D散点图数据的方法

我曾经使用MATLAB,对于我提出的问题,我可以使用p = polyfit(x,y,1)来估算板中散射数据的最佳拟合线.我想知道我可以依赖哪些资源来用C++实现线拟合算法.我知道这个主题有很多算法,对我来说,我希望算法应该快,同​​时它可以在MATLAB中获得相当的polyfit函数精度.

c++ algorithm matlab curve-fitting linear-regression

7
推荐指数
3
解决办法
2万
查看次数

逻辑回归大边际分类器?

据我所知,SVM中的大边际效应:

例如,让我们看看这张图片:

SVM

在SVM优化目标中,通过正则化项我们试图找到一组参数,其中(参数矢量)theta的范数很小.因此,我们必须找到小的向量theta,并且在该向量上的正例(p)的投影大(以补偿内积的小的θ向量).同时大p给我们很大的余量.在这个图像中,我们找到了理想的theta,并且有了它的大p(和大边距):

SVM2

我的问题:

为什么逻辑回归不是大边际分类器?在LR中,我们以相同的方式最小化正则化项中的Theta向量.也许我不明白,如果是这样 - 纠正我.

我使用了Coursera ml课程中的图像和理论.

machine-learning mathematical-optimization svm linear-regression

7
推荐指数
1
解决办法
939
查看次数

如何使用c ++获得线性回归线的斜率?

我需要获得类似于以下链接中的excel函数实现方式的线性回归:

http://office.microsoft.com/en-gb/excel-help/slope-function-HP010342903.aspx
Run Code Online (Sandbox Code Playgroud)

是否有一个C++库或一个人创建的简单编码解决方案可以做到这一点?我已经根据这个公式实现了代码,但它并不总能给我正确的结果(取自这里http://easycalculation.com/statistics/learn-regression.php)....

Slope(b) = (N?XY - (?X)(?Y)) / (N?X2 - (?X)2)
         = ((5)*(1159.7)-(311)*(18.6))/((5)*(19359)-(311)2)
         = (5798.5 - 5784.6)/(96795 - 96721)
         = 13.9/74
         = 0.19 
Run Code Online (Sandbox Code Playgroud)

如果我对下面的向量进行尝试,我会得到错误的结果(我应该期待0.305556):x = 6,5,11,7,5,4,4 y = 2,3,9,1,8,7 ,5

提前致谢

c++ math linear-regression

7
推荐指数
3
解决办法
2万
查看次数

如何从R中的lm.fit返回预测值,残差,R平方?

这段代码将返回系数:intercept,slop1,slop2

set.seed(1)
n=10

y=rnorm(n)
x1=rnorm(n)
x2=rnorm(n)

lm.ft=function(y,x1,x2)
  return(lm(y~x1+x2)$coef)

res=list();
for(i in 1:n){
  x1.bar=x1-x1[i]
  x2.bar=x2-x2[i]
  res[[i]]=lm.ft(y,x1.bar,x2.bar)
}
Run Code Online (Sandbox Code Playgroud)

如果我输入:

   > res[[1]]
Run Code Online (Sandbox Code Playgroud)

我明白了:

      (Intercept)          x1          x2 
     -0.44803887  0.06398476 -0.62798646 
Run Code Online (Sandbox Code Playgroud)

我们如何返回预测值,残差,R square,..等?

我需要一些通用的东西从摘要中提取我需要的东西?

regression r linear-regression

7
推荐指数
2
解决办法
3万
查看次数

'statsmodels'或其他Python包是否提供与R''step'功能相同的功能?

是否有一个statsmodels或类似的R等效R step用于使用AIC选择基于公式的模型的功能?

r linear-regression model-fitting pandas statsmodels

7
推荐指数
1
解决办法
2060
查看次数

在R中,如何定义模型对比以比较两个相对于常见控件的条件?

我一直在使用Limma包中的makeContrasts函数来创建对比,我理解如何进行简单的对比,例如将每个治疗与控件独立比较或比较两种治疗方法:

makeContrasts(A_vs_Ctrl = "A - Control", B_vs_Ctrl = "B - Control",
              C_vs_Ctrl = "C - Control", A_vs_B = "A - B",
              levels = c("Control", "A", "B", "C"))

          Contrasts
Levels      A_vs_Ctrl  B_vs_Ctrl  C_vs_Ctrl  A_vs_B
  Control        -1        -1        -1        0
  A               1         0         0        1
  B               0         1         0       -1
  C               0         0         1        0
Run Code Online (Sandbox Code Playgroud)

我的问题是,当每种治疗方法被认为是相对于对照时,如何对两种治疗方法之间的对比进行编码?例如,我想确定何时A_vs_Ctrl和之间存在差异B_vs_Ctrl; 这个想法是,这将表明治疗A和治疗何时以不同的方式而不是以相同的方式BControl病症不同.我对此的尝试如下,但我不认为这是正确的,我无法理解如何在对比中正确编码这个假设.

makeContrasts(AvsCtrl_VS_BvsCtrl = "(A - Control)/2 - (B - Control)/2",levels=c( "Control","A","B","C"))

 Contrasts
Levels    AvsCtrl_VS_BvsCtrl
  Control                0.0 …
Run Code Online (Sandbox Code Playgroud)

r linear-regression limma

7
推荐指数
1
解决办法
158
查看次数