从Udacity的深度学习类中,y_i的softmax只是指数除以整个Y向量的指数之和:
哪里S(y_i)是的SOFTMAX功能y_i,并e为指数和j是否定的.输入向量Y中的列数.
我尝试过以下方法:
import numpy as np
def softmax(x):
"""Compute softmax values for each sets of scores in x."""
e_x = np.exp(x - np.max(x))
return e_x / e_x.sum()
scores = [3.0, 1.0, 0.2]
print(softmax(scores))
Run Code Online (Sandbox Code Playgroud)
返回:
[ 0.8360188 0.11314284 0.05083836]
Run Code Online (Sandbox Code Playgroud)
但建议的解决方案是:
def softmax(x):
"""Compute softmax values for each sets of scores in x."""
return np.exp(x) / np.sum(np.exp(x), axis=0)
Run Code Online (Sandbox Code Playgroud)
它产生与第一个实现相同的输出,即使第一个实现显式获取每列和最大值的差异,然后除以总和.
有人可以用数学方式显示原因吗?一个是正确的而另一个是错的吗?
实现在代码和时间复杂性方面是否相似?哪个更有效率?
分类问题,例如逻辑回归或多项逻辑回归,优化了交叉熵损失.通常,交叉熵层遵循softmax层,其产生概率分布.
在tensorflow中,至少有十几种不同的交叉熵损失函数:
tf.losses.softmax_cross_entropytf.losses.sparse_softmax_cross_entropytf.losses.sigmoid_cross_entropytf.contrib.losses.softmax_cross_entropytf.contrib.losses.sigmoid_cross_entropytf.nn.softmax_cross_entropy_with_logitstf.nn.sigmoid_cross_entropy_with_logits哪个只适用于二进制分类,哪个适用于多类问题?你何时应该使用sigmoid而不是softmax?如何在sparse功能与别人不同,为什么仅是它softmax?
相关(更多数学导向)讨论:交叉熵丛林.
machine-learning neural-network logistic-regression tensorflow cross-entropy
我有一个由数字和分类数据组成的数据集,我想根据患者的医疗特征预测其不良结果。我为我的数据集定义了一个预测管道,如下所示:
X = dataset.drop(columns=['target'])
y = dataset['target']
# define categorical and numeric transformers
numeric_transformer = Pipeline(steps=[
('knnImputer', KNNImputer(n_neighbors=2, weights="uniform")),
('scaler', StandardScaler())])
categorical_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='constant', fill_value='missing')),
('onehot', OneHotEncoder(handle_unknown='ignore'))])
# dispatch object columns to the categorical_transformer and remaining columns to numerical_transformer
preprocessor = ColumnTransformer(transformers=[
('num', numeric_transformer, selector(dtype_exclude="object")),
('cat', categorical_transformer, selector(dtype_include="object"))
])
# Append classifier to preprocessing pipeline.
# Now we have a full prediction pipeline.
clf = Pipeline(steps=[('preprocessor', preprocessor),
('classifier', LogisticRegression())])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
clf.fit(X_train, …Run Code Online (Sandbox Code Playgroud) 我正在运行一个逻辑模型,我预测了logit值.我用了 :
from sklearn import metrics
fpr, tpr, thresholds = metrics.roc_curve(Y_test,p)
Run Code Online (Sandbox Code Playgroud)
我知道metric.roc_auc_score将给出曲线下面积但是任何人都可以让我知道找到最佳截止点(阈值)的命令是什么.
我正在使用sklearn的逻辑回归函数,并想知道每个求解器实际上在幕后做什么来解决优化问题.
有人可以简单地描述"newton-cg","sag","lbfgs"和"liblinear"正在做什么吗?如果没有,任何相关的链接或阅读材料也非常感谢.
非常感谢提前.
我正在用sklearn.linear_model.LogisticRegression它scikit learn来运行Logistic回归.
C : float, optional (default=1.0) Inverse of regularization strength;
must be a positive float. Like in support vector machines, smaller
values specify stronger regularization.
Run Code Online (Sandbox Code Playgroud)
请问C简单来说,这意味着什么?什么是正规化力量?
我有一个由逻辑回归算法训练的二元预测模型.我想知道哪些特征(预测因子)对于正面或负面类的决定更重要.我知道有一些coef_参数来自scikit-learn包,但我不知道它是否足够重要.另一件事是我如何coef_根据负面和正面类别的重要性来评估价值观.我还读到了标准化的回归系数,我不知道它是什么.
可以说,有一些特征,如肿瘤的大小,肿瘤的重量等,以决定恶性或非恶性的测试案例.我想知道哪些特征对恶性而非恶性预测更重要.它有道理吗?
我试图在这个笔记本中解决这个问题6.问题是使用sklearn.linear_model中的LogisticRegression模型,使用50,100,1000和5000个训练样本训练一个关于此数据的简单模型. https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/1_notmnist.ipynb
lr = LogisticRegression()
lr.fit(train_dataset,train_labels)
Run Code Online (Sandbox Code Playgroud)
这是我试图做的代码,它给了我错误.ValueError:找到带有暗淡的数组3.估计的估计值<= 2.
任何的想法?
我尝试运行以下代码.顺便说一句,我是python和sklearn的新手.
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
# data import and preparation
trainData = pd.read_csv('train.csv')
train = trainData.values
testData = pd.read_csv('test.csv')
test = testData.values
X = np.c_[train[:, 0], train[:, 2], train[:, 6:7], train[:, 9]]
X = np.nan_to_num(X)
y = train[:, 1]
Xtest = np.c_[test[:, 0:1], test[:, 5:6], test[:, 8]]
Xtest = np.nan_to_num(Xtest)
# model
lr = LogisticRegression()
lr.fit(X, y)
Run Code Online (Sandbox Code Playgroud)
其中y是0和1的np.ndarray
我收到以下内容:
文件"C:\ Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py",line> 1174,in fit check_classification_targets(y)
文件"C:\ Anaconda3\lib\site-packages\sklearn\utils\multiclass.py",第172行,>在check_classification_targets中引发ValueError("未知标签类型:%r"%y_type)
ValueError:未知标签类型:'未知'
来自sklearn文档:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression.fit
y:类似数组,形状(n_samples,)目标值(分类中的类标签,回归中的实数)
我的错误是什么? …
逻辑回归的成本函数是
cost(h(theta)X,Y) = -log(h(theta)X) or -log(1-h(theta)X)
Run Code Online (Sandbox Code Playgroud)
我的问题是将对数表达式用于成本函数的基础是什么.它来自何处?我相信你不能只是把"-log"放在一边.如果有人能解释成本函数的推导,我将不胜感激.谢谢.
python ×7
scikit-learn ×6
numpy ×2
logarithm ×1
pandas ×1
python-3.x ×1
roc ×1
softmax ×1
tensorflow ×1