相关疑难解决方法(0)

准确度分数ValueError:无法处理二进制和连续目标的混合

我使用linear_model.LinearRegressionscikit-learn作为预测模型.它的工作原理很完美.我有一个问题是使用accuracy_score指标评估预测结果.这是我的真实数据:

array([1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)

我的预测数据:

array([ 0.07094605,  0.1994941 ,  0.19270157,  0.13379635,  0.04654469,
    0.09212494,  0.19952108,  0.12884365,  0.15685076, -0.01274453,
    0.32167554,  0.32167554, -0.10023553,  0.09819648, -0.06755516,
    0.25390082,  0.17248324])
Run Code Online (Sandbox Code Playgroud)

我的代码:

accuracy_score(y_true, y_pred, normalize=False)
Run Code Online (Sandbox Code Playgroud)

错误信息:

ValueError:无法处理二进制和连续目标的混合

救命 ?谢谢.

python machine-learning prediction linear-regression scikit-learn

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

损失和准确性 - 这些合理的学习曲线吗?

我正在学习神经网络,我在Keras中为UCI机器学习库中的虹膜数据集分类构建了一个简单的网络.我使用了一个带有8个隐藏节点的隐藏层网络.使用Adam优化器的学习率为0.0005,并且运行200个时期.Softmax用于输出,损失为catogorical-crossentropy.我得到以下学习曲线.

学习曲线

正如您所看到的,准确性的学习曲线有很多平坦的区域,我不明白为什么.错误似乎在不断减少,但准确性似乎并没有以同样的方式增加.精确度学习曲线中的平坦区域意味着什么?为什么即使错误似乎在减少,这些区域的准确度也不会增加?

这在培训中是正常的还是我更有可能在这里做错了什么?

dataframe = pd.read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:4].astype(float)
y = dataset[:,4]

scalar = StandardScaler()
X = scalar.fit_transform(X)

label_encoder = LabelEncoder()
y = label_encoder.fit_transform(y)

encoder = OneHotEncoder()
y = encoder.fit_transform(y.reshape(-1,1)).toarray()

# create model
model = Sequential()
model.add(Dense(8, input_dim=4, activation='relu'))
model.add(Dense(3, activation='softmax'))

# Compile model
adam = optimizers.Adam(lr=0.0005, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='categorical_crossentropy',
              optimizer=adam, 
              metrics=['accuracy'])

# Fit the model
log = model.fit(X, y, epochs=200, batch_size=5, validation_split=0.2)

fig = plt.figure()
fig.suptitle("Adam, lr=0.0006, one hidden layer")

ax = fig.add_subplot(1,2,1) …
Run Code Online (Sandbox Code Playgroud)

classification machine-learning loss neural-network keras

9
推荐指数
1
解决办法
2916
查看次数

使用 LSTM 进行多元二元序列预测

我正在研究序列预测问题,并且在这方面没有太多经验,因此下面的一些问题可能很幼稚。

仅供参考:我在这里创建了一个重点关注 CRF 的后续问题

我有以下问题:

我想预测多个非独立变量的二元序列。

输入:

我有一个包含以下变量的数据集:

  1. 时间戳
  2. A组和B组
  3. 与特定时间戳的每个组相对应的二进制信号

此外,假设以下情况:

  1. 我们可以从时间戳(例如一天中的小时)中提取其他属性,这些属性可以用作外部预测器
  2. 我们认为 A 组和 B 组不是独立的,因此联合建模他们的行为可能是最佳选择

binary_signal_group_Abinary_signal_group_B是我想使用(1)它们过去的行为和(2)从每个时间戳提取的附加信息来预测的 2 个非独立变量。

到目前为止我所做的:

# required libraries
import re
import numpy as np
import pandas as pd
from keras import Sequential
from keras.layers import LSTM

data_length = 18  # how long our data series will be
shift_length = 3  # how long of a sequence do we want

df = (pd.DataFrame  # create a sample dataframe
    .from_records(np.random.randint(2, …
Run Code Online (Sandbox Code Playgroud)

time-series lstm keras tensorflow sequence-to-sequence

5
推荐指数
1
解决办法
2240
查看次数

为什么不使用均方误差来解决分类问题?

我正在尝试使用 LSTM 解决一个简单的二元分类问题。我试图找出网络的正确损失函数。问题是,当我使用二元交叉熵作为损失函数时,与使用均方误差 (MSE) 函数相比,训练和测试的损失值相对较高。

经过研究,我发现二元交叉熵应该用于分类问题和 MSE 用于回归问题的理由。但是,就我而言,使用 MSE 进行二元分类时,我获得了更好的准确性和更小的损失值。

我不确定如何证明这些获得的结果是合理的。为什么不使用均方误差来解决分类问题?

python mean-square-error lstm keras cross-entropy

5
推荐指数
2
解决办法
5699
查看次数