繁体   English   中英

我应该将目标类转换为浮点数还是整数?

[英]Should I cast target class as float or integer?

sklearn ,我应该将target classinteger or float 它会有所作为吗?

我问是因为我正在训练一个Neural Network并在这个问题中读到将一个类转换为浮点数可能会导致问题。

然后根据这个问题,我认为答案是Integer ,但我想知道是否是这种情况以及为什么。

在 Scikit-learn 中,将目标类强制转换为 float 或 int 类型(甚至是字符串,请参阅: 分类中的目标变量是否需要数字编码? ),它们都是允许的。 您只需要注意分类目标将保持与输入相同的类型,因此如果您的输入是浮点类型,您将获得一个浮点预测向量(请参阅: https : //scikit-learn.org/stable /tutorial/basic/tutorial.html#type-casting )。

在此示例中,您将直接验证KNeighborsClassifier如何生成相同的类预测(但具有不同的数据类型,具体取决于目标类输入类型):

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

data = load_iris()
(X_train, X_test, 
 y_train, y_test) = train_test_split(data.data,
                                     data.target,
                                     test_size=0.33,
                                     random_state=42)
neigh = KNeighborsClassifier(n_neighbors=3)

neigh.fit(X_train, y_train.astype(int))
int_preds = neigh.predict(X_test)

neigh.fit(X_train, y_train.astype(float))
float_preds = neigh.predict(X_test)

print(int_preds.dtype, float_preds.dtype)
print("Same classes:", (int_preds == float_preds).all())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM