gpt4 book ai didi

python - 如何使用 sklearn 预处理器

转载 作者:行者123 更新时间:2023-12-01 07:37:10 26 4
gpt4 key购买 nike

我有一个包含三列的数据集,我想应用SVM机器学习算法,但我不知道我的代码有什么问题

我写了这段代码

tfidf_vectorizer = TfidfVectorizer()
attack_data = pd.DataFrame(attack_data, columns = ['payload', 'label', 'attack_type'])
tf_train_data = pd.concat([attack_data['payload'], attack_data['attack_type']])
trained_tf_idf_transformer = tfidf_vectorizer.fit_transform(tf_train_data)
attack_data['tf_idf_payload'] = trained_tf_idf_transformer.transform(attack_data['payload'])
attack_data['tf_idf_attack_type'] = trained_tf_idf_transformer.transform(attack_data['attack_type'])
data_for_model = attack_data[['tf_idf_payload', 'tf_idf_attack_type', 'label']]
x = data_for_model[['tf_idf_payload', 'tf_idf_attack_type']].as_matrix()
y = data_for_model['label'].as_matrix()
with open ("x_result.pkl",'wb') as handls:
p.dump(trained_tf_idf_transformer,handls)

出现此错误: Attack_data['tf_idf_payload'] = Training_tf_idf_transformer.transform(attack_data['payload'])

文件“C:\Users\me\Anaconda3\lib\site-packages\scipy\sparse\base.py”,第 686 行,getattr 引发 AttributeError(attr + "未找到")

属性错误:找不到转换

最佳答案

这是因为 fit_transform 不返回拟合转换器,而是返回转换后的数据。

trained_tf_idf_transformer = tfidf_vectorizer.fit_transform(tf_train_data)
attack_data['tf_idf_payload'] = trained_tf_idf_transformer.transform(attack_data['payload'])

错误,应该是:

tf_train_data_transformed = tfidf_vectorizer.fit_transform(tf_train_data)
attack_data['tf_idf_payload'] = tfidf_vectorizer.transform(attack_data['payload'])

看到您可以使用相同的对象 tfidf_vectorizer 来转换您的其他数据(在您训练它时它已更新)。

我无法使用你的示例,因为它不可重现,而且我有点懒于理解所有步骤,但看看这个:

import pandas as pd
from sklearn.preprocessing import StandardScaler

df_train = pd.DataFrame({'data': [1,2,3]})
df_validation = pd.DataFrame({'data': [1,2,3]})

scaler = StandardScaler()
scaler_trained = scaler.fit_transform(df)
df_validation_transformed = scaler_trained.transform(df_validation)

引发同样的错误。

此代码有效:

import pandas as pd
from sklearn.preprocessing import StandardScaler

df_train = pd.DataFrame({'data': [1,2,3]})
df_validation = pd.DataFrame({'data': [1,2,3]})

scaler = StandardScaler()
df_train_transformed = scaler.fit_transform(df)
df_validation_transformed = scaler.transform(df_validation)

您只需遵循相同的逻辑即可。

关于python - 如何使用 sklearn 预处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56936071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com