提高分类的准确性

数据挖掘 分类 预测建模
2022-02-21 23:31:56

我有 95 个数值变量和 5 个分类变量的数据。我的 Y 有 2 个值。我建立了一个决策树,我的准确率为 81.8%。然后我创建了 3 个新变量,如下所示。准确率提高到 84.3%

  1. 标准化数值变量和训练数据,找到 Y=1 和 Y=0 的平均向量
  2. 对于每个数据点,从每个平均向量中找到欧几里德距离 - distance0 和 distance1
  3. 如果 distance0 <= distance1,第三个变量将为 0

我想知道我是否可以创建任何其他新变量来提高准确性

我使用了决策树,因为它构建速度很快,并且可以指示新创建的变量是否有用。

如果您有任何想法,请告诉我

1个回答

您可以使用 k-means 之类的方法对数据进行聚类,并将分配的聚类用作新功能。

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

data = load_iris()

X = pd.DataFrame(data['data'], columns=data['feature_names'])
y = data['target']

X_train, X_test, y_train, y_test = train_test_split(X.copy(), y, test_size=0.2)

km = KMeans(n_clusters=3)
km.fit(X_train)
training_dist = km.transform(X_train)

X_train['dist1'] = training_dist[:,0]
X_train['dist2'] = training_dist[:,1]
X_train['dist3'] = training_dist[:,2]

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

# new data
test_dist = km.transform(X_test)

X_test['dist1'] = test_dist[:,0]
X_test['dist2'] = test_dist[:,1]
X_test['dist3'] = test_dist[:,2]

clf.predict(X_test)