我正在尝试为斯坦福机器学习讲座(讲座2大约25:00)中解释的梯度下降算法编写一些代码.下面是我最初使用的实现,我认为它已经从讲座中正确复制了,但是当我>8向训练集添加大数字()时它并没有收敛.
我正在输入一个数字X,并且point (X,X)被添加到训练集中,所以此刻,我只是想让它收敛到y=ax+b哪里a=1=theta\[1\]和b=0=theta\[0\].训练集是数组x和y,其中(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) 我对使用6次多项式插值非线性数据有非常具体的要求.我已经看到了numpy/scipy例程(scipy.interpolate.InterpolatedUnivariateSpline),它允许插入最多5度.
即使没有直接的功能,有没有办法在Python中复制Excel的LINEST线性回归算法?LINEST允许6度曲线拟合,但我不想使用Excel做任何事情,因为这个计算是一个更大的Python脚本的一部分.
任何帮助,将不胜感激!
任何人都可以向我解释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) 我是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轴与时间有关,我就无法工作.
我曾经使用MATLAB,对于我提出的问题,我可以使用p = polyfit(x,y,1)来估算板中散射数据的最佳拟合线.我想知道我可以依赖哪些资源来用C++实现线拟合算法.我知道这个主题有很多算法,对我来说,我希望算法应该快,同时它可以在MATLAB中获得相当的polyfit函数精度.
据我所知,SVM中的大边际效应:
例如,让我们看看这张图片:

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

为什么逻辑回归不是大边际分类器?在LR中,我们以相同的方式最小化正则化项中的Theta向量.也许我不明白,如果是这样 - 纠正我.
我使用了Coursera ml课程中的图像和理论.
machine-learning mathematical-optimization svm linear-regression
我需要获得类似于以下链接中的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
提前致谢
这段代码将返回系数: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,..等?
我需要一些通用的东西从摘要中提取我需要的东西?
我一直在使用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和治疗何时以不同的方式而不是以相同的方式B与Control病症不同.我对此的尝试如下,但我不认为这是正确的,我无法理解如何在对比中正确编码这个假设.
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) c++ ×3
r ×3
python ×2
algorithm ×1
gnuplot ×1
limma ×1
math ×1
matlab ×1
numpy ×1
pandas ×1
regression ×1
scipy ×1
statsmodels ×1
svm ×1
time-series ×1