熊猫矢量化

时间:2020-06-08 22:07:59

标签: python pandas numpy dataframe vectorization

我想实现我的KNN算法。在计算距训练集到每个向量的距离时,我想使用向量化。

class KNN:
def __init__(self, train_data, k_value, decision_column):
    self.train_data = train_data
    self.k_value = k_value
    self.decision_column = decision_column

    self.columns = list(self.train_data.columns)
    self.columns.remove(decision_column)



def _predict_vector(self, *args):
    vector_data = pd.DataFrame(columns=[self.decision_column, 'Distance'])
    vector_data[self.decision_column] = self.train_data[self.decision_column]
    vector_data['Distance'] = 0

    for i, value in enumerate(args):
        vector_data['Distance'] += (self.train_data[self.columns[i]] - value) ** 2

    # I ignore calculating the square root of distance
    vector_data = vector_data.sort_values(by='Distance').iloc[:self.k_value]
    vector_data = vector_data[self.decision_column].value_counts().iloc[:1].index.array[0]

    return vector_data



def predict_for_dataframe(self, test_data):
    test_data['KNN_Prediction'] = self._predict_vector(test_data.values)

我想要我的算法在这里

test_data['KNN_Prediction'] = self._predict_vector(test_data.values)

test_data.values将传递计算距离所需的所有数据 例如。在虹膜数据集中它将是[1.2、4.5、1.6、4.1]

我知道方法_predict_vector可能具有(self,SL,SW,PL,PW)之类的参数(用于鸢尾花),但是我希望我的算法可用于许多其他数据集,因此这就是为什么我使用* args

您能帮我使用向量化吗?

0 个答案:

没有答案