- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否有人可以快速查看以下代码片段并指出我在计算模型中每个类的样本概率和相关代码错误时的误解。我尝试手动计算 sklearn 函数 lm.predict_proba(X) 提供的结果,遗憾的是结果不同,所以我犯了一个错误。
我认为该错误将在以下代码演练的“d”部分。也许在数学上,但我不明白为什么。
a) 创建和训练逻辑回归模型(工作正常)
lm = LogisticRegression(random_state=413, multi_class='multinomial', solver='newton-cg')
lm.fit(X, train_labels)
W = lm.coef_
b = lm.intercept_
def reshape_single_element(x,num):
singleElement = x[num]
nx,ny = singleElement.shape
return singleElement.reshape((1,nx*ny))
select_image_number = 6
X_select_image_data=reshape_single_element(train_dataset,select_image_number)
Y_probabilities = lm.predict_proba(X_select_image_data)
Y_pandas_probabilities = pd.Series(Y_probabilities[0], index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
print"estimate probabilities for each class: \n" ,Y_pandas_probabilities , "\n"
print"all probabilities by lm.predict_proba(..) sum up to ", np.sum(Y_probabilities) , "\n"
estimate probabilities for each class:
a 0.595426
b 0.019244
c 0.001343
d 0.004033
e 0.017185
f 0.004193
g 0.160380
h 0.158245
i 0.003093
j 0.036860
dtype: float64
all probabilities by lm.predict_proba(..) sum up to 1.0
manual_calculated_probabilities = []
for select_class_k in range(0,10): #a=0. b=1, c=3 ...
z_for_class_k = (np.sum(W[select_class_k] *X_select_image_data) + b[select_class_k] )
p_for_class_k = 1/ (1 + math.exp(-z_for_class_k))
manual_calculated_probabilities.append(p_for_class_k)
print "formula: ", manual_calculated_probabilities , "\n"
def softmax(x):
"""Compute softmax values for each sets of scores in x."""
e = np.exp(x)
dist = e / np.sum(np.exp(x),axis=0)
return dist
abc = softmax(manual_calculated_probabilities)
print "softmax:" , abc
formula: [0.9667598370531315, 0.48453459121301334, 0.06154496922245115, 0.16456194859398865, 0.45634781280053394, 0.16999340794727547, 0.8867996361191054, 0.8854473986336552, 0.13124464656251109, 0.642913996162282]
softmax: [ 0.15329642 0.09464644 0.0620015 0.0687293 0.0920159 0.069103610.14151607 0.14132483 0.06647715 0.11088877]
For a multi_class problem, if multi_class is set to be "multinomial" the softmax function is used to find the predicted probability of each class.
print "shape of X: " , X_select_image_data.shape
print "shape of W: " , W.shape
print "shape of b: " , b.shape
shape of X: (1, 784)
shape of W: (10, 784)
shape of b: (10,)
最佳答案
我认为问题在于
p_for_class_k = 1/ (1 + math.exp(-z_for_class_k))
1 / (1 + exp(-logit))
是仅适用于二元问题的简化。
p_for_classA =
exp(logit_classA) /
[1 + exp(logit_classA) + exp(logit_classB) ... + exp(logit_classC)]
关于scikit-learn - sklearn : LogisticRegression - predict_proba(X) - calculation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35315269/
sklearn 中的逻辑回归类带有 L1 和 L2 正则化。如何关闭正则化以获得“原始”逻辑拟合,例如 Matlab 中的 glmfit?我想我可以设置 C = large number 但我不认为这
from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() train_mat
我有一组生成的数据,以 CSV 格式描述 Web 连接,如下所示: conn_duration,conn_destination,response_size,response_code,is_mali
我正在尝试将逻辑回归模型拟合到 sklearn 的鸢尾花数据集。我得到一条看起来太平坦的概率曲线,也就是系数太小。我希望萼片长度 > 7 的概率超过 90%: 这条概率曲线真的错了吗?如果是这样,是什
我正在使用 sklearn 包中的 LogisticRegression,并且有一个关于分类的快速问题。我为我的分类器构建了一条 ROC 曲线,结果证明我的训练数据的最佳阈值约为 0.25。我假设创建
为什么不同的求解器会导致 sklearn 中简单问题的学习权重不同?这闻起来不像数值不稳定——看起来不同的求解器旨在收敛于不同的权重集。怎么回事? 这似乎与正则化有关,因为效果随着 C 的增加而消失
我正在研究 LogisticRegression 模型并尝试进行调试。 这是一件简单的事情,但似乎无法让它发挥作用:只需 time of day和一个state 0 or 1 ,并想要预测一天中给定时
有人告诉我,在处理多元逻辑回归时,您想在 X 矩阵中为模型截距添加一列 1。使用sklearn的模型时,模块会自动添加1的列吗? 最佳答案 LinearRegression 模块有一个 fit_int
scikit-learn 的 sklearn.linear_model.LogisticRegression 类如何处理回归和分类问题? 如 Wikipedia page 上所示以及许多来源,由于逻辑
我正在尝试使用 scikit-learn 0.12.1 来: 训练逻辑回归分类器 根据保留的验证数据评估分类器 向该分类器提供新数据并为每个观察检索 5 个最可能的标签 Sklearn 使所有这一切变
我正在尝试使用 SHAP 对我的产品分类模型进行一些不良案例分析。我的数据看起来像这样: corpus_train, corpus_test, y_train, y_test = train_test
我是新手,我必须根据 De Pauw 和 Wagacha (1998) 方法(基本上是 char n-grams 上的 maxent)对词典中的单词进行分类。数据非常大(500 000 个条目和数百万
我正在查看 Spark 1.5 dataframe/row api和 implementation对于逻辑回归。据我了解,其中的 train 方法首先将 dataframe 转换为 RDD[Label
Sklearn 的 LogisticRegression 模型拒绝并行运行。我设置了 n_jobs=-1,也尝试了 n_jobs=4。运气不好——只有一个核心参与。我并行运行了其他 sklearn 模
我正在尝试使用 python 中的 doc2vec 将用户输入文本分为两类。我有以下代码来训练模型,然后对输入文本进行分类。问题是,我找不到任何对字符串进行分类的方法。我是新手,所以请忽略错误。 这里
sklearn LogisticRegression 中带有 l1 惩罚的默认 alpha 是多少? lmMod = LogisticRegression(penalty='l1') 最佳答案 根据d
我正在尝试通过 sklearn 运行逻辑回归: from sklearn.model_selection import train_test_split from sklearn.linear_mod
似乎在 scikit-learn 中实现的 LogisticRegression 无法学习简单的 bool 函数 AND 或 OR。我会理解 XOR 给出不好的结果,但 AND 和 OR 应该没问题。
我正在尝试使用 LogisticRegression 预测 Twitter 的人口统计属性,但我在预测中收到“File "Anaconda\lib\site-packages\sklearn\line
在使用 sklearn.linear_model.LogisticRegression 拟合训练数据集后,我想获得训练数据集和交叉验证数据集的成本函数值。 是否可以让 sklearn 简单地给我它最小
我是一名优秀的程序员,十分优秀!