zoukankan      html  css  js  c++  java
  • 支持向量机中SVM算法+sklearn库的实现

    直接上代码了:

    import numpy as np
    from sklearn.svm import SVC
    from sklearn.preprocessing import StandardScaler
    from sklearn.model_selection import train_test_split
    
    
    def load_data(filename):
        data = np.genfromtxt(filename, delimiter='	')
        x = data[:, 1:]  # 数据特征
        y = data[:, 0].astype(int)  # 标签
        scaler = StandardScaler()  # 采用标准化形式
        x_std = scaler.fit_transform(x)  # 标准化
        # 将数据划分为训练集和测试集,test_size=.5表示50%的测试集
        x_train, x_test, y_train, y_test = train_test_split(x_std, y, test_size=.5)
        print(len(x_train), len(x_test), len(y_train), len(y_test))
        return x_train, x_test, y_train, y_test
    
    
    def svm_c(x_train, x_test, y_train, y_test):
        predictor = SVC(gamma='scale', C=1.0, decision_function_shape='ovr', kernel='rbf')
        predictor.fit(x_train, y_train)
        # answer = predictor.predict(x_test) 预测
        print(predictor.score(x_test, y_test))
    
        # print(predictor.support_vectors_)  # 获取支持向量
        # print(predictor.support_)  # 获取支持向量的索引
        # print(predictor.n_support_)  # 获取每个类的支持向量数
    
    
    if __name__ == '__main__':
        svm_c(*load_data('txt/10/frame505/all.txt'))
    
    

    我的txt数据集中,第一列是标签,也就是最后的分类结果,后面几列是特征,所以load_data()函数中的数据提取具体列大家应该可以看懂了

  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/ycycn/p/13872041.html
Copyright © 2011-2022 走看看