ValueError: Inconsistent number of samples when using sklearn on defaultdict
ValueError: Inconsistent number of samples when using sklearn on defaultdict
我正在阅读 .csv 文件中的列作为 sklearn 朴素贝叶斯拟合的输入。但是,我 运行 遇到了这些错误和警告:
DeprecationWarning:传递一维数组作为数据在 0.17 中已弃用,并将在 0.19 中引发 ValueError。如果您的数据具有单个特征,则使用 X.reshape(-1, 1) 或如果它包含单个样本,则使用 X.reshape(1, -1) 重塑您的数据。
和
ValueError:找到样本数量不一致的数组:[1 10509]
这是我的代码:
clf = GaussianNB()
columns = defaultdict(list)
with open('file.CSV', 'rb') as f:
reader = csv.reader(f)
for row in reader:
for(i, v) in enumerate(row):
columns[i].append(v)
clf.fit(columns[9], columns[10])
请注意,len(columns[9]) 和 len(columns[10]) 都是 10509
正如警告所建议的那样,我尝试了很多 reshape()、flatten()、ravel() 的不同组合,还尝试使用 numpy 数组,但似乎没有任何效果。
有什么建议吗?似乎大多数人都在使用除 defaultdict 之外的某种数据结构,但我不确定如何使用其他数据结构从 .csv
中读取
我找到了解决问题的方法。似乎问题不在于塑造数据结构,而是将其设置为数字类型而不是字符串类型。
x = np.array(columns[9]).reshape(len(columns[10]), 1).astype(np.float)
y = np.array(columns[10])
clf.fit(x, y)
我正在阅读 .csv 文件中的列作为 sklearn 朴素贝叶斯拟合的输入。但是,我 运行 遇到了这些错误和警告:
DeprecationWarning:传递一维数组作为数据在 0.17 中已弃用,并将在 0.19 中引发 ValueError。如果您的数据具有单个特征,则使用 X.reshape(-1, 1) 或如果它包含单个样本,则使用 X.reshape(1, -1) 重塑您的数据。
和
ValueError:找到样本数量不一致的数组:[1 10509]
这是我的代码:
clf = GaussianNB()
columns = defaultdict(list)
with open('file.CSV', 'rb') as f:
reader = csv.reader(f)
for row in reader:
for(i, v) in enumerate(row):
columns[i].append(v)
clf.fit(columns[9], columns[10])
请注意,len(columns[9]) 和 len(columns[10]) 都是 10509
正如警告所建议的那样,我尝试了很多 reshape()、flatten()、ravel() 的不同组合,还尝试使用 numpy 数组,但似乎没有任何效果。
有什么建议吗?似乎大多数人都在使用除 defaultdict 之外的某种数据结构,但我不确定如何使用其他数据结构从 .csv
中读取我找到了解决问题的方法。似乎问题不在于塑造数据结构,而是将其设置为数字类型而不是字符串类型。
x = np.array(columns[9]).reshape(len(columns[10]), 1).astype(np.float)
y = np.array(columns[10])
clf.fit(x, y)