将朴素贝叶斯应用于具有 nan 值的测试数据
apply naive bayes on test data with nan-values
我训练了一种算法,可以在测试集上进行天气预报。
'Naive Bayes'
from sklearn import metrics
from sklearn.naive_bayes import GaussianNB
import seaborn as sns
weatherbayes = GaussianNB()
weatherbayes.fit(X_train, y_train)
predbayes = weatherbayes.predict(df_test)
问题是,我的测试集有 nan 值,我不想用 'mean' 或其他东西替换它。应该忽略它们而不将它们从测试集中移除。
我的训练集是这样的:
我的测试集是这样的:
如果我不删除 nan 值,我会收到以下错误:
ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。
如果您想忽略它们,为什么不将它们从 training/test 集合中删除?我的意思是,删除它们会使您失去信息,但您需要这些信息吗?或许你可以看看解释的一些插补方法 here。
如果您想用特定的值替换 NaN,您可以使用例如:
df.fillna(df.mean(), inplace=True)
这将用列中的算术平均值替换缺失值。
我训练了一种算法,可以在测试集上进行天气预报。
'Naive Bayes'
from sklearn import metrics
from sklearn.naive_bayes import GaussianNB
import seaborn as sns
weatherbayes = GaussianNB()
weatherbayes.fit(X_train, y_train)
predbayes = weatherbayes.predict(df_test)
问题是,我的测试集有 nan 值,我不想用 'mean' 或其他东西替换它。应该忽略它们而不将它们从测试集中移除。
我的训练集是这样的:
我的测试集是这样的:
如果我不删除 nan 值,我会收到以下错误:
ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。
如果您想忽略它们,为什么不将它们从 training/test 集合中删除?我的意思是,删除它们会使您失去信息,但您需要这些信息吗?或许你可以看看解释的一些插补方法 here。 如果您想用特定的值替换 NaN,您可以使用例如:
df.fillna(df.mean(), inplace=True)
这将用列中的算术平均值替换缺失值。