标签: linear-regression

在循环中预测.lm().警告:从等级不足的拟合预测可能会产生误导

这个R代码抛出警告

# Fit regression model to each cluster
y <- list() 
length(y) <- k
vars <- list() 
length(vars) <- k
f <- list()
length(f) <- k

for (i in 1:k) {
  vars[[i]] <- names(corc[[i]][corc[[i]]!= "1"])
  f[[i]]  <- as.formula(paste("Death ~", paste(vars[[i]], collapse= "+")))
  y[[i]]  <- lm(f[[i]], data=C1[[i]]) #training set
  C1[[i]] <- cbind(C1[[i]], fitted(y[[i]]))
  C2[[i]] <- cbind(C2[[i]], predict(y[[i]], C2[[i]])) #test set
}
Run Code Online (Sandbox Code Playgroud)

我有一个训练数据集(C1)和一个测试数据集(C2).每个都有129个变量.我做了k意味着对C1进行聚类分析,然后基于聚类成员分割我的数据集,并创建了不同聚类的列表(C1 [[1]],C1 [[2]],...,C1 [[k] ]).我还为C2中的每个案例分配了一个集群成员资格,并创建了C2 [[1]],...,C2 [[k]].然后我对C1中的每个簇进行线性回归.我的因变量是"死亡".我的预测变量在每个群集中都不同,变量[[i]](i = 1,...,k)显示了预测变量名称列表.我想为测试数据集中的每个案例预测死亡(C2 [[1]],...,C2 [[k]).当我运行以下代码时,对于某些集群.

我收到了这个警告:

In predict.lm(y[[i]], C2[[i]]) :
prediction from a rank-deficient …
Run Code Online (Sandbox Code Playgroud)

statistics r linear-regression lm

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

Javascript中的线性回归

我想在网络浏览器中使用Javascript进行最小二乘拟合.

目前,用户使用HTML文本输入输入数据点信息,然后我使用jQuery获取数据并使用Flot绘制图形.

在用户输入他们的数据点后,我想向他们展示一条"最合适的线".我想我会计算线性,多项式,指数和对数方程,然后选择具有最高R^2值的方程.

我似乎无法找到任何可以帮助我做到这一点的库.我偶然发现了jStat,但它完全缺少文档(据我所知)并且在挖掘源代码之后它似乎没有内置任何线性回归功能 - 我纯粹基于函数然而,名字.

有谁知道任何提供简单回归分析的Javascript库?


希望是我可以像这样使用图书馆......

如果我在数组中有一些散点var points = [[3,4],[15,45],...[23,78]],我可以将它交给某个函数lin_reg(points),它会返回类似于[7.12,3]线性方程的东西y = 7.12 x + 3.

javascript statistics jquery flot linear-regression

28
推荐指数
6
解决办法
3万
查看次数

线性回归::标准化(Vs)标准化

我使用线性回归来预测数据.但是,当我标准化(Vs)标准化变量时,我得到完全对比的结果.

标准化= x -xmin/xmax - xmin零分标准化= x - xmean/xstd  

a) Also, when to Normalize (Vs) Standardize ?
b) How Normalization affects Linear Regression?
c) Is it okay if I don't normalize all the attributes/lables in the linear regression?
Run Code Online (Sandbox Code Playgroud)

谢谢,桑托什

machine-learning feature-extraction linear-regression

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

26
推荐指数
3
解决办法
5万
查看次数

OLS回归:Scikit与Statsmodels?

简短版本:我在某些数据上使用了scikit LinearRegression,但我习惯于p值,因此将数据放入statsmodels OLS中,尽管R ^ 2大致相同,但变量系数都大量不同.这让我很担心,因为最可能的问题是我在某个地方犯了错误,现在我对这两个输出都没有信心(因为我可能错误地制作了一个模型,但不知道哪个模型).

更长的版本:因为我不知道问题出在哪里,我不确切地知道要包括哪些细节,包括一切可能都太多了.我也不确定包含代码或数据.

我的印象是scikit的LR和statsmodels OLS都应该做OLS,据我所知OLS是OLS所以结果应该是相同的.

对于scikit的LR,结果是(统计上)相同,无论我是否设置normalize = True或= False,我觉得有点奇怪.

对于statsmodels OLS,我使用来自sklearn的StandardScaler来规范化数据.我添加了一列,所以它包含一个拦截(因为scikit的输出包括一个拦截).更多相关内容:http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html(添加此列并未将变量系数更改为任何显着程度,并且截距非常接近于零.)StandardScaler没有不喜欢我的整数不是浮点数,所以我尝试了这个:https://github.com/scikit-learn/scikit-learn/issues/1709 这使警告消失但结果完全相同.

当然,我使用5倍cv进行sklearn方法(每次R ^ 2对于测试和训练数据都是一致的),对于statsmodels我只是把它全部丢弃.

sklearn和statsmodels的R ^ 2约为0.41(这对社会科学有益).这可能是一个好兆头或只是巧合.

数据是对WoW中的化身的观察(来自http://mmnet.iis.sinica.edu.tw/dl/wowah/),我每周都会用一些不同的功能来制作它.最初这是一个数据科学课的课程项目.

独立变量包括一周中观察的数量(int),角色等级(int),如果在公会中(布尔),当看到时(工作日的布尔,平日前夕,工作日晚,周末相同的三个),对于字符类的虚拟(在数据收集时,在WoW中只有8个类,因此有7个虚拟变量并且原始字符串分类变量被删除),以及其他类.

因变量是每个字符在该周(int)中获得的级别数.

有趣的是,类似变量中的一些相对顺序在statsmodels和sklearn之间保持不变.因此,尽管负载非常不同,但"看到"的等级顺序是相同的,并且角色类假人的等级顺序是相同的,尽管负载是非常不同的.

我认为这个问题类似于这个问题:Python statsmodels OLS和R's lm的区别

我在Python和统计数据方面做得很好,但是还不够好,可以想出这样的东西.我试着阅读sklearn docs和statsmodels docs,但是如果答案就在那里,我不理解它.

我会很高兴知道:

  1. 哪个输出可能准确?(当然,如果我错过了一个小兵,他们可能都会.)
  2. 如果我弄错了,它是什么以及如何解决它?
  3. 我可以在没有问这里的情况下想出来,如果是这样的话怎么样?

我知道这个问题有一些相当模糊的部分(没有代码,没有数据,没有输出),但我认为它更多的是关于两个包的一般过程.当然,一个似乎更多的统计数据,似乎更多的机器学习,但他们都是OLS所以我不明白为什么输出不一样.

(我甚至尝试了一些其他的OLS调用三角测量,一个给了一个低得多的R ^ 2,一个循环了五分钟而我杀了它,一个崩溃了.)

谢谢!

python linear-regression scikit-learn statsmodels

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

如何使用scikit线性回归找到系数的特征名称?

#training the model
model_1_features = ['sqft_living', 'bathrooms', 'bedrooms', 'lat', 'long']
model_2_features = model_1_features + ['bed_bath_rooms']
model_3_features = model_2_features + ['bedrooms_squared', 'log_sqft_living', 'lat_plus_long']

model_1 = linear_model.LinearRegression()
model_1.fit(train_data[model_1_features], train_data['price'])

model_2 = linear_model.LinearRegression()
model_2.fit(train_data[model_2_features], train_data['price'])

model_3 = linear_model.LinearRegression()
model_3.fit(train_data[model_3_features], train_data['price'])

# extracting the coef
print model_1.coef_
print model_2.coef_
print model_3.coef_
Run Code Online (Sandbox Code Playgroud)

如果我改变了特征的顺序,则coef仍以相同的顺序打印,因此我想知道该特征与coeff的映射

python machine-learning linear-regression scikit-learn

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

Python中的简单线性回归

我正在尝试实现此算法以查找单个变量的截距和斜率:

线性回归的算法

这是我更新拦截和斜率的Python代码.但它并没有趋同.RSS随着迭代而不是减少而增加,并且在一些迭代之后它变得无限.我没有发现任何实现算法的错误.我怎么能解决这个问题?我也附上了csv文件.这是代码.

import pandas as pd
import numpy as np

#Defining gradient_decend
#This Function takes X value, Y value and vector of w0(intercept),w1(slope)
#INPUT FEATURES=X(sq.feet of house size)
#TARGET VALUE=Y (Price of House)
#W=np.array([w0,w1]).reshape(2,1)
#W=[w0,
#    w1]

def gradient_decend(X,Y,W):
    intercept=W[0][0]
    slope=W[1][0]

    #Here i will get a list
    #list is like this
    #gd=[sum(predicted_value-(intercept+slope*x)),
    #     sum(predicted_value-(intercept+slope*x)*x)]
    gd=[sum(y-(intercept+slope*x) for x,y in zip(X,Y)),
        sum(((y-(intercept+slope*x))*x) for x,y in zip(X,Y))]
    return np.array(gd).reshape(2,1)

#Defining Resudual sum of squares
def RSS(X,Y,W):
    return sum((y-(W[0][0]+W[1][0]*x))**2 for x,y in zip(X,Y))


#Reading …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning linear-regression gradient-descent

22
推荐指数
2
解决办法
4831
查看次数

scipy.stats可以识别并掩盖明显的异常值吗?

使用scipy.stats.linregress,我在一些高度相关的x,y实验数据集上执行简单的线性回归,并且最初在视觉上检查每个x,y散点图以获得异常值.更一般地(即以编程方式)是否有一种方法来识别和屏蔽异常值?

python statistics scipy linear-regression

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

如何使用`lmplot`绘制线性回归而不拦截?

lmplot在seaborn拟合回归模型的截距.但是,有时我想要在没有截距的情况下拟合回归模型,即通过原点进行回归.

例如:

In [1]: import numpy as np
   ...: import pandas as pd
   ...: import seaborn as sns
   ...: import matplotlib.pyplot as plt
   ...: import statsmodels.formula.api as sfa
   ...: 

In [2]: %matplotlib inline
In [3]: np.random.seed(2016)
In [4]: x = np.linspace(0, 10, 32)
In [5]: y = 0.3 * x + np.random.randn(len(x))
In [6]: df = pd.DataFrame({'x': x, 'y': y})
In [7]: r = sfa.ols('y ~ x + 0', data=df).fit()
In [8]: sns.lmplot(x='x', y='y', data=df, fit_reg=True) …
Run Code Online (Sandbox Code Playgroud)

python linear-regression seaborn

21
推荐指数
1
解决办法
1576
查看次数

如果数据具有单个特征,则使用 array.reshape(-1, 1) 重塑数据;如果数据包含单个样本,则使用 array.reshape(1, -1) 重塑数据

当我从数据中预测一个样本时,它会给出重塑错误,但我的模型具有相同的行数。这是我的代码:

import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np
x = np.array([2.0 , 2.4, 1.5, 3.5, 3.5, 3.5, 3.5, 3.7, 3.7])
y = np.array([196, 221, 136, 255, 244, 230, 232, 255, 267])

lr = LinearRegression()
lr.fit(x,y)

print(lr.predict(2.4))
Run Code Online (Sandbox Code Playgroud)

错误是

if it contains a single sample.".format(array))
ValueError: Expected 2D array, got scalar array instead:
array=2.4.
Reshape your data either using array.reshape(-1, 1) if your data has a 
single feature or array.reshape(1, -1) if it contains a single sample.
Run Code Online (Sandbox Code Playgroud)

python machine-learning linear-regression python-3.x scikit-learn

20
推荐指数
1
解决办法
9万
查看次数