使用Scikit-Learn的SVR,您如何结合分类和连续特征来预测目标?



我想使用支持向量机来解决一个回归问题,以根据一些混合分类和连续的特征来预测教师的收入。例如,我有[白人,亚洲人,西班牙裔,黑人],#年教,和教育年限。

对于分类,我使用了sci-kit的预处理模块,并对4场比赛进行了热编码。在这种情况下,对于白人教师来说,它看起来像 [1,0,0,0],因此我有一个 {[1,0,0,0]、[0,1,0,0] 的数组,...[0,0,1,0], [1,0,0,0]} 表示为 SVR 编码的每位教师的种族。我可以仅使用种族与收入进行回归,即:

clf= SVR(C=1.0)
clf.fit(racearray, income) 

我也可以使用定量特征执行回归。但是,我不知道如何将这些功能组合在一起,即

continousarray(zip(yearsteaching,yearseduction))
clf.fit((racearray, continousarray), income)

你可以使用scikit-learn的OneHotEncoder。如果你的数据在 numpy 数组 "racearray" 中,并且列是

[ contionus_feature1, contious_feature2, 分类, continous_feature3]

您的代码应如下所示(请记住,numpy 枚举以 0 开头)

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(categorical_features=[2])
race_encoded = enc.fit_transform(racearay)

然后,您可以像往常一样查看您的race_encode数组,并在 SVR 中将其用作

clf= SVR(C=1.0)
clf.fit(race_encoded, income) 

您可以轻松获取分类特征的假人,然后开始建模:

假设您在 DF 中有一些数字和分类特征:

cat_columns = ['white', 'asian', 'hispanic', 'black']
df_encoded = pd.get_dummies(df, columns = cat_columns)

并适合:

X = df[df.columns[:-1]].values
y = df[df.columns[-1]].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0) 
svmregr = make_pipeline(StandardScaler(), SVR(C=1.0, epsilon=0.2))
svmregr.fit(X_train,y_train)
svmregr.score(X_test,y_test)}

相关内容

  • 没有找到相关文章

最新更新