标签: logistic-regression

Scikit Learn:Logistic回归模型系数:澄清

我需要知道如何以这样一种方式返回逻辑回归系数,即我可以自己生成预测概率.

我的代码看起来像这样:

lr = LogisticRegression()
lr.fit(training_data, binary_labels)

# Generate probabities automatically
predicted_probs = lr.predict_proba(binary_labels)
Run Code Online (Sandbox Code Playgroud)

我假设lr.coeff_值将遵循典型的逻辑回归,因此我可以返回预测的概率,如下所示:

sigmoid( dot([val1, val2, offset], lr.coef_.T) )
Run Code Online (Sandbox Code Playgroud)

但这不是合适的表述.有没有人有适当的格式来生成Scikit Learn LogisticRegression的预测概率?谢谢!

python scikit-learn logistic-regression

22
推荐指数
1
解决办法
4万
查看次数

如何在非常不平衡的数据集上使用vowpal wabbit进行逻辑回归

我正在尝试使用vowpal wabbit进行逻辑回归.我不确定这是否是正确的语法

For training, I do

 ./vw -d ~/Desktop/new_data.txt --passes 20 --binary --cache_file cache.txt -f lr.vw --loss_function logistic --l1 0.05

For testing I do 
./vw -d ~/libsvm-3.18_test/matlab/new_data_test.txt --binary -t -i lr.vw -p predictions.txt -r raw_score.txt
Run Code Online (Sandbox Code Playgroud)

这是我的火车数据的片段

-1:1.00038 | 110:0.30103 262:0.90309 689:1.20412 1103:0.477121 1286:1.5563 2663:0.30103 2667:0.30103 2715:4.63112 3012:0.30103 3113:8.38411 3119:4.62325 3382:1.07918 3666:1.20412 3728:5.14959 4029:0.30103 4596:0.30103

1:2601.25 | 32:2.03342 135:3.77379 146:3.19535 284:2.5563 408:0.30103 542:3.80618 669:1.07918 689:2.25527 880:0.30103 915:1.98227 1169:5.35371 1270:0.90309 1425:0.30103 1621:0.30103 1682:0.30103 1736:3.98227 1770:0.60206 1861:4.34341 1900:3.43136 1905:7.54141 1991:5.33791 2437:0.954243 2532:2.68664 3370:2.90309 …
Run Code Online (Sandbox Code Playgroud)

classification vowpalwabbit logistic-regression

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

predict_proba用于交叉验证的模型

我想用Logistic回归模型预测交叉验证的概率.我知道您可以获得交叉验证分数,但是可以从predict_proba而不是分数返回值吗?

# imports
from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import (StratifiedKFold, cross_val_score,
                                      train_test_split)
from sklearn import datasets

# setup data
iris = datasets.load_iris()
X = iris.data
y = iris.target

# setup model
cv = StratifiedKFold(y, 10)
logreg = LogisticRegression()

# cross-validation scores
scores = cross_val_score(logreg, X, y, cv=cv)

# predict probabilities
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y)
logreg.fit(Xtrain, ytrain)
proba = logreg.predict_proba(Xtest)
Run Code Online (Sandbox Code Playgroud)

python scikit-learn cross-validation logistic-regression

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

scikit-learn LogisticRegression.predict_proba的返回值

LogisticRegression.predict_proba功能究竟返回了什么?

在我的例子中,我得到这样的结果:

[[  4.65761066e-03   9.95342389e-01]
 [  9.75851270e-01   2.41487300e-02]
 [  9.99983374e-01   1.66258341e-05]]
Run Code Online (Sandbox Code Playgroud)

从其他计算中,我知道,使用sigmoid函数,第二列是概率.该文件说,第一列是n_samples,但那是不可能的,因为我的样品的评价,这是文字和数字没有.文档还说,第二列是n_classes.这当然不可能,因为我只有两个类(即+1-1),并且该函数应该是关于计算真正属于类的样本的概率,而不是类本身.

真正的第一列是什么?它为什么存在?

python machine-learning probability scikit-learn logistic-regression

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

AttributeError: 'str' 对象在拟合逻辑回归模型时没有属性 'decode'

我目前正在尝试使用逻辑回归创建二元分类。目前我正在确定特征重要性。我已经进行了数据预处理(一次热编码和采样)并使用 XGBoost 和 RandomFOrestClassifier 运行它,没问题

但是,当我尝试拟合 LogisticRegression 模型时(以下是我在 Notebook 中的代码),

from sklearn.linear_model import LogisticRegression

#Logistic Regression
# fit the model
model = LogisticRegression()
# fit the model
model.fit(np.array(X_over), np.array(y_over))
# get importance
importance = model.coef_[0]
# summarize feature importance
df_imp = pd.DataFrame({'feature':list(X_over.columns), 'importance':importance})
display(df_imp.sort_values('importance', ascending=False).head(20))

# plot feature importance
plt.bar(list(X_over.columns), importance)
plt.show()
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误

...
~\AppData\Local\Continuum\anaconda3\lib\site-packages\joblib\parallel.py in <listcomp>(.0)
    223         with parallel_backend(self._backend, n_jobs=self._n_jobs):
    224             return [func(*args, **kwargs)
--> 225                     for func, args, kwargs in self.items]
    226 
    227     def __len__(self):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\linear_model\_logistic.py in _logistic_regression_path(X, …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn logistic-regression

19
推荐指数
3
解决办法
8939
查看次数

sklearn Logistic回归中的C参数是什么?

C中的参数是什么意思sklearn.linear_model.LogisticRegression?它如何影响决策边界?高值会使C决策边界非线性吗?如果我们可视化决策边界,逻辑回归的过度拟合会是什么样子?

python machine-learning scikit-learn logistic-regression overfitting-underfitting

19
推荐指数
1
解决办法
4万
查看次数

Spark Java错误:大小超过Integer.MAX_VALUE

我正在尝试使用spark进行一些简单的机器学习任务.我使用pyspark和spark 1.2.0来做一个简单的逻辑回归问题.我有120万条培训记录,我记录了记录的功能.当我将散列函数的数量设置为1024时,程序运行正常,但是当我将散列函数的数量设置为16384时,程序会多次失败并出现以下错误:

Py4JJavaError: An error occurred while calling o84.trainLogisticRegressionModelWithSGD.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 4.0 failed 4 times, most recent failure: Lost task 1.3 in stage 4.0 (TID 9, workernode0.sparkexperience4a7.d5.internal.cloudapp.net): java.lang.RuntimeException: java.lang.IllegalArgumentException: Size exceeds Integer.MAX_VALUE
    at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:828)
    at org.apache.spark.storage.DiskStore.getBytes(DiskStore.scala:123)
    at org.apache.spark.storage.DiskStore.getBytes(DiskStore.scala:132)
    at org.apache.spark.storage.BlockManager.doGetLocal(BlockManager.scala:517)
    at org.apache.spark.storage.BlockManager.getBlockData(BlockManager.scala:307)
    at org.apache.spark.network.netty.NettyBlockRpcServer$$anonfun$2.apply(NettyBlockRpcServer.scala:57)
    at org.apache.spark.network.netty.NettyBlockRpcServer$$anonfun$2.apply(NettyBlockRpcServer.scala:57)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
    at org.apache.spark.network.netty.NettyBlockRpcServer.receive(NettyBlockRpcServer.scala:57)
    at org.apache.spark.network.server.TransportRequestHandler.processRpcRequest(TransportRequestHandler.java:124)
    at org.apache.spark.network.server.TransportRequestHandler.handle(TransportRequestHandler.java:97)
    at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:91)
    at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:44)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) …
Run Code Online (Sandbox Code Playgroud)

python java distributed-computing logistic-regression apache-spark

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

Vowpal Wabbit中逻辑回归的正确性?

我已经开始使用Vowpal Wabbit进行逻辑回归,但是我无法重现它给出的结果.也许它有一些无证的"魔法",但有没有人能够复制/验证/检查逻辑回归的计算?

例如,通过下面的简单数据,我们的目标是模拟age预测的方式label.很明显,当年龄增加观察到1增加的可能性时,存在强烈的关系.

作为一个简单的单元测试,我使用了下面的12行数据:

age label
20  0
25  0
30  0
35  0
40  0
50  0
60  1
65  0
70  1
75  1
77  1
80  1
Run Code Online (Sandbox Code Playgroud)

现在,使用R,SPSS或甚至手动对此数据集执行逻辑回归,生成一个看起来像的模型 L = 0.2294*age - 14.08.因此,如果我使用年龄,并使用logit变换prob = 1 /(1 + EXP(-L)),我可以获得预测的概率,其范围从0.0001第一行到0.9864最后一行,如合理预期的那样.

如果我在Vowpal Wabbit插入相同的数据,

-1 'P1 |f age:20
-1 'P2 |f age:25
-1 'P3 |f age:30
-1 'P4 |f age:35
-1 'P5 |f age:40 …
Run Code Online (Sandbox Code Playgroud)

vowpalwabbit logistic-regression

15
推荐指数
1
解决办法
3398
查看次数

绘制逻辑回归的决策边界

我正在实施逻辑回归.我设法从中获取概率,并且能够预测2级分类任务.

我的问题是:

对于我的最终模型,我有权重和训练数据.有2个功能,所以我的重量是一个2行的向量.

我如何绘制这个?我看过这篇文章,但我不太明白答案.我需要等高线图吗?

matplotlib scikit-learn logistic-regression

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

逻辑回归中的成本函数给出NaN作为结果

我正在使用批量梯度下降实现逻辑回归.输入样本有两类要分类.类是1和0.在训练数据时,我使用以下sigmoid函数:

t = 1 ./ (1 + exp(-z));
Run Code Online (Sandbox Code Playgroud)

哪里

z = x*theta
Run Code Online (Sandbox Code Playgroud)

我使用以下成本函数来计算成本,以确定何时停止培训.

function cost = computeCost(x, y, theta)
    htheta = sigmoid(x*theta);
    cost = sum(-y .* log(htheta) - (1-y) .* log(1-htheta));
end
Run Code Online (Sandbox Code Playgroud)

我在每一步的成本都是NaN,因为htheta在大多数情况下,值为1或0.我该怎么做才能确定每次迭代的成本价值?

这是逻辑回归的梯度下降代码:

function [theta,cost_history] = batchGD(x,y,theta,alpha)

cost_history = zeros(1000,1);

for iter=1:1000
  htheta = sigmoid(x*theta);
  new_theta = zeros(size(theta,1),1);
  for feature=1:size(theta,1)
    new_theta(feature) = theta(feature) - alpha * sum((htheta - y) .*x(:,feature))                         
  end
  theta = new_theta;
  cost_history(iter) = computeCost(x,y,theta);
end
end
Run Code Online (Sandbox Code Playgroud)

matlab classification machine-learning gradient-descent logistic-regression

15
推荐指数
2
解决办法
8782
查看次数