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