我有一个带二元结果的回归模型.我用glmnet拟合了模型并得到了选定的变量及其系数.
由于glmnet不计算变量重要性,我想将精确输出(选定变量及其系数)提供给glm以获取信息(标准错误等).
我搜索了r文件,似乎我可以在glm中使用"method"选项来指定用户定义的函数.但我没有这样做,有人可以帮助我吗?
我正在尝试运行混合效果模型,F2_difference
该模型预测其余列作为预测变量,但我收到一条错误消息
固定效应模型矩阵排名不足,因此下降7列/系数.
从这个链接,固定效果模型是排名不足,我想我应该findLinearCombos
在R包中使用caret
.但是,当我尝试时findLinearCombos(data.df)
,它给了我错误信息
qr.default(object)中的错误:外部函数调用中的NA/NaN/Inf(arg 1)另外:警告消息:在qr.default(object)中:强制引入的NAs
我的数据没有任何NA - 可能导致这种情况的原因是什么?(对不起,如果答案很明显 - 我是R的新手).
我的所有数据都是除了我试图预测的数值之外的因素.这是我的数据的一小部分样本.
sex <- c("f", "m", "f", "m")
nasal <- c("TRUE", "TRUE", "FALSE", "FALSE")
vowelLabel <- c("a", "e", "i", "o")
speaker <- c("Jim", "John", "Ben", "Sally")
word_1 <- c("going", "back", "bag", "back")
type <- c("coronal", "coronal", "labial", "velar")
F2_difference <- c(345.6, -765.8, 800, 900.5)
data.df <- data.frame(sex, nasal, vowelLabel, speaker,
word_1, type, F2_difference
stringsAsFactors = TRUE)
Run Code Online (Sandbox Code Playgroud)
编辑:这是一些更多的代码,如果它有帮助.
formula <- F2_difference ~ …
Run Code Online (Sandbox Code Playgroud) 我试图在XGBoost上使用scikit-learn的GridSearchCV进行超级计量搜索.在网格搜索期间,我希望它能够提前停止,因为它可以大大减少搜索时间,并且(期望)在我的预测/回归任务上有更好的结果.我通过其Scikit-Learn API使用XGBoost.
model = xgb.XGBRegressor()
GridSearchCV(model, paramGrid, verbose=verbose ,fit_params={'early_stopping_rounds':42}, cv=TimeSeriesSplit(n_splits=cv).get_n_splits([trainX, trainY]), n_jobs=n_jobs, iid=iid).fit(trainX,trainY)
Run Code Online (Sandbox Code Playgroud)
我尝试使用fit_params提供早期停止参数,但之后它会抛出此错误,这主要是因为缺少早期停止所需的验证集:
/opt/anaconda/anaconda3/lib/python3.5/site-packages/xgboost/callback.py in callback(env=XGBoostCallbackEnv(model=<xgboost.core.Booster o...teration=4000, rank=0, evaluation_result_list=[]))
187 else:
188 assert env.cvfolds is not None
189
190 def callback(env):
191 """internal function"""
--> 192 score = env.evaluation_result_list[-1][1]
score = undefined
env.evaluation_result_list = []
193 if len(state) == 0:
194 init(env)
195 best_score = state['best_score']
196 best_iteration = state['best_iteration']
Run Code Online (Sandbox Code Playgroud)
如何使用early_stopping_rounds在XGBoost上应用GridSearch?
注意:模型在没有gridsearch的情况下工作,GridSearch的工作也没有'fit_params = {'early_stopping_rounds':42}
简单的问题真的!我正在运行大量的线性回归,y~x
并希望获得每个回归的方差,而无需从summary.lm
命令中给出的标准错误输出中手动计算.只是为了节省一点时间:-).执行此命令的任何想法?或者我是否必须自己编写一个函数来完成它?
m<-lm(Alopecurus.geniculatus~Year)
> summary(m)
Call:
lm(formula = Alopecurus.geniculatus ~ Year)
Residuals:
Min 1Q Median 3Q Max
-19.374 -8.667 -2.094 9.601 21.832
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 700.3921 302.2936 2.317 0.0275 *
Year -0.2757 0.1530 -1.802 0.0817 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 11.45 on 30 degrees of freedom
(15 observations deleted due to missingness)
Multiple R-squared: 0.09762, Adjusted R-squared: 0.06754 …
Run Code Online (Sandbox Code Playgroud) 我使用以下代码与glmnet:
> library(glmnet)
> fit = glmnet(as.matrix(mtcars[-1]), mtcars[,1])
> plot(fit, xvar='lambda')
Run Code Online (Sandbox Code Playgroud)
但是,我想打印最好的Lambda系数,就像在岭回归中一样.我看到以下适合的结构:
> str(fit)
List of 12
$ a0 : Named num [1:79] 20.1 21.6 23.2 24.7 26 ...
..- attr(*, "names")= chr [1:79] "s0" "s1" "s2" "s3" ...
$ beta :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
.. ..@ i : int [1:561] 0 4 0 4 0 4 0 4 0 4 ...
.. ..@ p : int [1:80] 0 0 2 4 6 8 10 12 …
Run Code Online (Sandbox Code Playgroud) 为了帮助填充R标签,我发布了一些我经常从学生那里收到的问题.多年来,我已经对这些问题提出了自己的答案,但也许还有更好的方法,我不知道.
问题:我只是跑了一个回归连续y
和x
,但因子f
(如levels(f)
生产c("level1","level2")
)
thelm <- lm(y~x*f,data=thedata)
Run Code Online (Sandbox Code Playgroud)
现在我想绘制的预测值y
由x
由定义的组分解f
.我得到的所有情节都是丑陋的,显示的线条太多了.
我的回答:试试这个predict()
功能.
##restrict prediction to the valid data
##from the model by using thelm$model rather than thedata
thedata$yhat <- predict(thelm,
newdata=expand.grid(x=range(thelm$model$x),
f=levels(thelm$model$f)))
plot(yhat~x,data=thethedata,subset=f=="level1")
lines(yhat~x,data=thedata,subset=f=="level2")
Run Code Online (Sandbox Code Playgroud)
是否有其他想法(1)对于新手更容易理解和/或(2)从其他角度更好?
我正在寻找Python中逻辑回归(非正则化)的良好实现.我正在寻找一个可以为每个向量获得权重的包.任何人都可以建议一个良好的实施/包?谢谢!
我正在使用此页面执行逻辑回归.我的代码如下.
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial")
summary(mylogit)
prob=predict(mylogit,type=c("response"))
mydata$prob=prob
Run Code Online (Sandbox Code Playgroud)
运行此代码后,mydata dataframe有两列 - 'admit'和'prob'.这两列不应该足以获得ROC曲线吗?
如何获得ROC曲线.
其次,通过嘲笑mydata,似乎模型正在预测可能性admit=1
.
那是对的吗?
如何找出模型预测的特定事件?
谢谢
更新:似乎以下三个命令非常有用.它们提供了最大精度的截止点,然后有助于获得ROC曲线.
coords(g, "best")
mydata$prediction=ifelse(prob>=0.3126844,1,0)
confusionMatrix(mydata$prediction,mydata$admit
Run Code Online (Sandbox Code Playgroud) 我是回归游戏的新手,希望为满足特定条件的数据子集绘制功能上任意的非线性回归线(加上置信度和预测区间)(即平均重复值超过阈值;见下文).
的data
是为独立变量产生x
跨越20点不同的值:x=(20-np.arange(20))**2
与rep_num=10
重复为每个条件.数据显示出强烈的非线性x
,如下所示:
import numpy as np
mu = [.40, .38, .39, .35, .37, .33, .34, .28, .11, .24,
.03, .07, .01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
data = np.zeros((20, rep_num))
for i in range(13):
data[i] = np.clip(np.random.normal(loc=mu[i], scale=0.1, size=rep_num), 0., 1.)
Run Code Online (Sandbox Code Playgroud)
我可以制作数据的散点图; 重复方式由红点显示:
import matplotlib.pyplot as plt
plt.scatter(np.log10(np.tile(x[:,None], rep_num)), data,
facecolors='none', edgecolors='k', alpha=0.25)
plt.plot(np.log10(x), data.mean(1), 'ro', alpha=0.8)
plt.plot(np.log10(x), np.repeat(0., 20), 'k--')
plt.xlim(-0.02, np.max(np.log10(x)) + 0.02)
plt.ylim(-0.01, 0.7)
Run Code Online (Sandbox Code Playgroud)
我的目标是仅为那些复制均值> …
当损失函数是均方误差时,如何定义准确度?是绝对百分比误差吗?
我使用的模型具有输出激活线性和编译 loss= mean_squared_error
model.add(Dense(1))
model.add(Activation('linear')) # number
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
Epoch 99/100
1000/1000 [==============================] - 687s 687ms/step - loss: 0.0463 - acc: 0.9689 - val_loss: 3.7303 - val_acc: 0.3250
Epoch 100/100
1000/1000 [==============================] - 688s 688ms/step - loss: 0.0424 - acc: 0.9740 - val_loss: 3.4221 - val_acc: 0.3701
Run Code Online (Sandbox Code Playgroud)
那么例如val_acc:0.3250是什么意思?Mean_squared_error应该是标量而不是百分比 - 不应该吗?那么val_acc - 均方误差,或平均百分比误差或其他函数?
根据维基百科上的MSE定义:https://en.wikipedia.org/wiki/Mean_squared_error
MSE是估计量质量的度量 - 它总是非负的,接近零的值更好.
这是否意味着价值val_acc: 0.0
优于val_acc: 0.325
?
编辑:我训练时精确度量输出的更多示例 - 随着我训练更多,精度会增加.虽然损失函数 - mse应该减少.是否为mse定义了准确度 - 它是如何在Keras中定义的?
lAllocator: After …
Run Code Online (Sandbox Code Playgroud) regression machine-learning mean-square-error keras loss-function
regression ×10
r ×6
glmnet ×2
python ×2
statistics ×2
coefficients ×1
data-science ×1
glm ×1
interaction ×1
keras ×1
lambda ×1
lme4 ×1
matplotlib ×1
mixed-models ×1
python-3.x ×1
roc ×1
scikit-learn ×1
seaborn ×1
variance ×1
xgboost ×1