我正在尝试使用scikit learn创建一个logistic回归模型,代码如下。我用9列表示特性(X)和一列表示标签(Y)。当尝试拟合时,我得到一个错误“ValueError:找到的输入变量的样本数不一致:[9560000]”即使以前X和Y的长度相同,如果我使用X.transpose()我会得到一个不同的错误“AttributeError:'int'object has no attribute'lower'”。我假设这可能与tfidfvectorizer有关,我这样做是因为其中3列包含单个单词,并且不起作用。这是正确的方法吗?还是应该分别转换列中的单词,然后使用train_test_split?如果不是的话,我为什么会犯错误,我怎么才能把它们弄错呢。这里有一个csv的例子。
df = pd.read_csv("UNSW-NB15_1.csv",header=None, names=cols, encoding = "UTF-8",low_memory=False)
df.to_csv('netraf.csv')
csv = 'netraf.csv'
my_df = pd.read_csv(csv)
x_features = my_df.columns[1:10]
x_data = my_df[x_features]
Y = my_df["Label"]
x_train, x_validation, y_train, y_validation =
model_selection.train_test_split(x_data, Y, test_size=0.2, random_state=7)
tfidf_vectorizer = TfidfVectorizer()
lr = LogisticRegression()
tfidf_lr_pipe = Pipeline([('tfidf', tfidf_vectorizer), ('lr', lr)])
tfidf_lr_pipe.fit(x_train, y_train)
您要做的是不同寻常的,因为
TfidfVectorizer
是用来从文本中提取数字特征的。但是,如果您并不真正关心并且只想让您的代码正常工作,一种方法是将您的数字数据转换为字符串并配置TfidfVectorizer
以接受标记化的数据:尽管如此,我建议您使用另一种方法对数据集进行功能工程。例如,您可以尝试将to encode your nominal data(例如IP,port)转换为数值。在
相关问题 更多 >
编程相关推荐