gpt4 book ai didi

python - 如何使用 imblearn 和 SMOTE 生成分类合成样本?

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:16 38 4
gpt4 key购买 nike

我希望使用 imblearn 的 SMOTE 为机器学习算法生成合成样本。我有一些分类特征,我已使用 sklearn preprocessing.LabelEncoder 将其转换为整数。

我遇到的问题是,当我使用 smote 生成合成数据时,数据点变成 float 而不是分类数据所需的整数。

from collections import Counter
from sklearn.datasets import make_classification
from imblearn.over_sampling import SMOTE
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.decomposition import PCA
import numpy as np
from sklearn import preprocessing

if __name__ == '__main__':
df = pd.read_csv('resample.csv')
y = df['Result']
accounts = df['Account Number']
df.drop('Result',axis=1,inplace=True)
df.drop('Account Number', axis=1, inplace=True)

df.fillna(value=0, inplace=True)

le = preprocessing.LabelEncoder()
le.fit(df['Distribution Partner'])
print(le.classes_)
df['Distribution Partner'] = le.transform(df['Distribution Partner'])
print('Original dataset shape {}'.format(Counter(y)))
sm = SMOTE(kind='regular')
X_resampled, y_resampled = sm.fit_sample(df, y)
np.savetxt('output.csv', X_resampled, delimiter=",")
print('New dataset shape {}'.format(Counter(y_resampled)))

无论如何我可以让 SMOTE 生成合成样本,但只能使用值 0、1、2 等而不是 0.5、1.23、2.004?

最佳答案

非常简单:使用 SMOTENC 而不是 SMOTE。SMOTENC 可以处理分类和非分类特征。

示例代码:

from imblearn.over_sampling import SMOTENC`
obj = SMOTENC(categorical_features = [1,4])
ovsersampled_features, ovsersampled_target = obj.fit_sample(Features, Target)

[1,4] = 数据集分类列的索引。

*索引从0开始。

关于python - 如何使用 imblearn 和 SMOTE 生成分类合成样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580658/

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