标签: logistic-regression

有没有办法实现样本权重?

我在 Python 中使用 statsmodels 进行逻辑回归分析。例如:

import statsmodels.api as sm
import numpy as np
x = arange(0,1,0.01)
y = np.random.rand(100)
y[y<=x] = 1
y[y!=1] = 0
x = sm.add_constant(x)
lr = sm.Logit(y,x)
result = lr.fit().summary()
Run Code Online (Sandbox Code Playgroud)

但我想为我的观察定义不同的权重。我组合了 4 个不同大小的数据集,并希望对分析进行加权,以便来自最大数据集的观察结果不会主导模型。

python sample statsmodels logistic-regression

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

由于"完美的分离错误",无法运行逻辑回归

我是Python的数据分析的初学者,并且在使用这个特定的任务时遇到了麻烦.我搜索得相当广泛,但无法确定哪里出了问题.

我导入了一个文件并将其设置为数据帧.清除文件中的数据.但是,当我尝试将模型拟合到数据中时,我得到了一个

检测到完美分离,结果不可用

这是代码:

from scipy import stats
import numpy as np
import pandas as pd 
import collections
import matplotlib.pyplot as plt
import statsmodels.api as sm

loansData = pd.read_csv('https://spark-   public.s3.amazonaws.com/dataanalysis/loansData.csv')

loansData = loansData.to_csv('loansData_clean.csv', header=True, index=False)

## cleaning the file
loansData['Interest.Rate'] = loansData['Interest.Rate'].map(lambda x:  round(float(x.rstrip('%')) / 100, 4))
loanlength = loansData['Loan.Length'].map(lambda x: x.strip('months'))
loansData['FICO.Range'] = loansData['FICO.Range'].map(lambda x: x.split('-'))
loansData['FICO.Range'] = loansData['FICO.Range'].map(lambda x: int(x[0]))
loansData['FICO.Score'] = loansData['FICO.Range']

#add interest rate less than column and populate
## we only care about interest rates …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib pandas logistic-regression

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

Python:DeprecationWarning:elementwise ==比较失败; 这将在未来引发错误

在尝试udacity课程深度学习任务时,我遇到了将模型的预测与训练集的标签进行比较的问题.

from __future__ import print_function
import numpy as np
import tensorflow as tf
from six.moves import cPickle as pickle
from six.moves import range

pickle_file = 'notMNIST.pickle'

with open(pickle_file, 'rb') as f:
  save = pickle.load(f)
  train_dataset = save['train_dataset']
  train_labels = save['train_labels']
  valid_dataset = save['valid_dataset']
  valid_labels = save['valid_labels']
  test_dataset = save['test_dataset']
  test_labels = save['test_labels']
  del save  # hint to help gc free up memory
  print('Training set', train_dataset.shape, train_labels.shape)
  print('Validation set', valid_dataset.shape, valid_labels.shape)
  print('Test set', test_dataset.shape, test_labels.shape)
Run Code Online (Sandbox Code Playgroud)

这使输出为:
训练集(200000,28,28)(200000,)
验证集(10000,28,28)(10000,)
测试集(10000,28,28)(10000,)

# With …
Run Code Online (Sandbox Code Playgroud)

python comparison numpy machine-learning logistic-regression

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

神经网络(无隐藏层)与Logistic回归?

我一直在上神经网络课,并不真正理解为什么我从逻辑回归和两层神经网络(输入层和输出层)的准确度得分得到不同的结果.输出层使用sigmoid激活功能.根据我的学习,我们可以使用神经网络中的sigmoid激活函数来计算概率.如果与逻辑回归试图完成的内容完全相同,这应该非常相似.然后从那里backpropogate使用梯度下降最小化错误.可能有一个简单的解释,但我不明白为什么准确性得分变化如此之大.在这个例子中,我没有使用任何训练或测试集,只是简单的数据来演示我不理解的东西.

逻辑回归的准确率为71.4%.在下面的例子中,我刚刚为'X'和结果'y'数组创建了数字.当结果等于'1'时,我故意使'X'的数字更高,以便线性分类器可以具有一定的准确性.

import numpy as np
from sklearn.linear_model import LogisticRegression
X = np.array([[200, 100], [320, 90], [150, 60], [170, 20], [169, 75], [190, 65], [212, 132]])
y = np.array([[1], [1], [0], [0], [0], [0], [1]])

clf = LogisticRegression()
clf.fit(X,y)
clf.score(X,y) ##This results in a 71.4% accuracy score for logistic regression
Run Code Online (Sandbox Code Playgroud)

然而,当我实现一个没有隐藏层的神经网络时,只需对单节点输出层使用sigmoid激活函数(因此总共有两层,输入和输出层).我的准确率分数约为42.9%?为什么这与逻辑回归准确度得分显着不同?为什么这么低?

import keras
from keras.models import Sequential
from keras.utils.np_utils import to_categorical
from keras.layers import Dense, Dropout, Activation

model = Sequential()

#Create a neural network with 2 input nodes for the …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network logistic-regression keras

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

TypeError: 'numpy.float64' 对象不可调用 - 打印 F1 分数时

我正在尝试在 Jupyter Notebook 上运行以下代码:

lr = LogisticRegression(class_weight='balanced')
lr.fit(X_train,y_train)
y_pred = lr.predict(X_train)

acc_log = round(lr.score(X_train, y_train) * 100, 2)
prec_log = round(precision_score(y_train,y_pred) * 100,2)
recall_log = round(recall_score(y_train,y_pred) * 100,2)
f1_log = round(f1_score(y_train,y_pred) * 100,2)
roc_auc_log = roc_auc_score(y_train,y_pred)
Run Code Online (Sandbox Code Playgroud)

当尝试执行此操作时,我收到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-46-bcb2d9729eb6> in <module>
      6 prec_log = round(precision_score(y_train,y_pred) * 100,2)
      7 recall_log = round(recall_score(y_train,y_pred) * 100,2)
----> 8 f1_log = round(f1_score(y_train,y_pred) * 100,2)
      9 roc_auc_log = roc_auc_score(y_train,y_pred)

TypeError: 'numpy.float64' object is not callable
Run Code Online (Sandbox Code Playgroud)

似乎无法弄清楚我做错了什么。

python scikit-learn logistic-regression

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

逻辑回归/二项式的 glmnet 错误

尝试将 glmnet() 与 family="binomial" 拟合时出现此错误,用于逻辑回归拟合:

> data <- read.csv("DAFMM_HE16_matrix.csv", header=F)
> x <- as.data.frame(data[,1:3])
> x <- model.matrix(~.,data=x)
> y <- data[,4]

> train=sample(1:dim(x)[1],287,replace=FALSE)

> xTrain=x[train,]
> xTest=x[-train,]
> yTrain=y[train]
> yTest=y[-train]

> fit = glmnet(xTrain,yTrain,family="binomial")

Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
one multinomial or binomial class has 1 or 0 observations; not allowed
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激 - 我已经在互联网上搜索过,但没有找到任何有帮助的东西

编辑:

以下是数据的样子:

> data
          V1       V2    V3      V4
1   34927.00   156.60 20321  -12.60
2   34800.00   156.60 19811 …
Run Code Online (Sandbox Code Playgroud)

r glmnet logistic-regression

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

测试 R 中的比例优势假设

我在 R 中使用响应变量,即学生在特定课程中收到的字母等级。响应是有序的,在我看来,在逻辑上似乎是成正比的。我的理解是,在使用 polr() 而不是 multinom() 之前,我需要测试它是否成比例。

对于我的一门数据课程,我“测试”了这样的比例:

M1 <- logLik(polrModel)  #'log Lik.' -1748.180691 (df=8)
M2 <- logLik(multinomModel)  #'log Lik.' -1734.775727 (df=20)
G <- -2*(M1$1 - M2$2)) #I used a block bracket here in the real code
# 26.8099283
pchisq(G,12,lower.tail = FALSE) #DF is #of predictors
#0.008228890393     #THIS P-VAL TELLS ME TO REJECT PROPORTIONAL
Run Code Online (Sandbox Code Playgroud)

对于测试比例优势假设的第二种方法,我还运行了两个 vglm 模型,一个与family=cumulative(parallel =TRUE)另一个与family=cumulative(parallel =FALSE). 然后我pchisq()用模型偏差的差异和剩余自由度的差异进行了测试。

这两种方式中的任何一种都值得尊敬吗?如果没有,我很乐意帮助您确定是否接受或拒绝比例几率假设的实际编码!

除了上述两个测试之外,我还分别针对每个预测变量绘制了我的累积概率图。我读到我希望这些线平行。我不明白的是,polr()您的输出是每个自变量(系数)的单个斜率,然后是特定的截距,具体取决于您使用的累积概率(例如:P(Y<=A), P( Y<=B) 等)。那么,如果每个方程的斜率系数都相同,那么这些线怎么可能不平行?

我在 Chris Bilder 的 YouTube 课程中学习了我的基础知识;他在第 …

regression r logistic-regression non-linear-regression

6
推荐指数
1
解决办法
4869
查看次数

spark mllib 中逻辑回归的原始预测是什么?

我已经使用 spark mllib 运行了二元逻辑回归。根据 spark mllib 的文档,RawPrediction 是置信值,我假设 lcl 和 ucl 的概率。我正在获取 RawPrediction 的 -ve 值。在什么情况下,原始预测值可以是 -ve

logistic-regression apache-spark apache-spark-mllib

6
推荐指数
1
解决办法
1726
查看次数

因子的逻辑回归:eval(family$initialize) 中的错误:y 值必须为 0 &lt;= y &lt;= 1

无法修复以下逻辑回归的以下错误

training=(IBM$Serial<625)
data=IBM[!training,]
dim(data)
stock.direction <- data$Direction
training_model=glm(stock.direction~data$lag2,data=data,family=binomial)
###Error### ----  Error in eval(family$initialize) : y values must be 0 <= y <= 1
Run Code Online (Sandbox Code Playgroud)

我正在使用的数据中的几行

X   Date    Open    High    Low Close   Adj.Close   Volume  Return  lag1    lag2    lag3    Direction   Serial
1   28-11-2012  190.979996  192.039993  189.270004  191.979996  165.107727  3603600 0.004010855 0.004010855 -0.001198021    -0.006354834    Up  1
2   29-11-2012  192.75  192.899994  190.199997  191.529999  164.720734  4077900 0.00114865  0.00114865  -0.004020279    -0.009502386    Up  2
3   30-11-2012  191.75  192 189.5   190.070007  163.465073  4936400 0.003630178 0.003630178 -0.001894039    -0.005576956    Up  3 …
Run Code Online (Sandbox Code Playgroud)

r logistic-regression r-factor

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

Python scikit-learn 转 JSON

我有一个用 Python scikit-learn 构建的模型。我知道模型可以保存为 Pickle 或 Joblib 格式。是否有任何现有方法可以将作业保存为 JSON 格式?请参阅下面的模型构建代码以供参考:

import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import pickle
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names =['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Fit the model on 33%
model = LogisticRegression()
model.fit(X_train, Y_train)
filename = 'finalized_model.sav'
pickle.dump(model, open(filename, 'wb'))
Run Code Online (Sandbox Code Playgroud)

python json scikit-learn logistic-regression

6
推荐指数
1
解决办法
8409
查看次数