机器学习实战(六)—分类问题

基本分类模型

K近邻分类器(KNN)
通过计算待分类数据点,与已有数据集中的所有数据点的距离。取距离最小的前 K 个点,根据“少数服从多数”的原则,将这个数据点划分为出现次数最多的那个类别。

决策树
一种树形结构的分类器,通过顺序询问分类点的属性决定分类点最终的类别。通常根据特征的信息增益或其他指标,构建一棵决策树。
在分类时,只需要按照决策树中的结点依次进行判断,即可得到样本所属类别。
决策树本质上是寻找一种对特征空间上的划分,旨在构建一个训练数据拟合的好,并且复杂度小的决策树。

朴素贝叶斯
朴素贝叶斯分类器是一个以贝叶斯定理为基础的多分类的分类器。
对于给定数据,首先基于特征的条件独立性假设,学习输入输出的联合概率分布,然后基于此模型,对给定的输入 x ,利用贝叶斯定理求出后验概率最大的输出 y。
朴素贝叶斯是典型的生成学习方法,由训练数据学习联合概率分布,后验概率分布
朴素贝叶斯一般在小规模数据上的表现很好,适合进行多分类任务。

import pandas as pd
import numpy as np  
 
from sklearn.preprocessing import Imputer
from sklearn.cross_validation import train_test_split 
from sklearn.metrics import classification_report
   
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB
 
def load_datasets(feature_paths, label_paths):
    feature = np.ndarray(shape=(0,41))
    label = np.ndarray(shape=(0,1))
    for file in feature_paths:
        df = pd.read_table(file, delimiter=',', na_values='?', header=None)
        imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
        imp.fit(df)
        df = imp.transform(df)
        feature = np.concatenate((feature, df))
     
    for file in label_paths:
        df = pd.read_table(file, header=None)
        label = np.concatenate((label, df))
         
    label = np.ravel(label)
    return feature, label
 
if __name__ == '__main__':
    ''' 数据路径 '''
    featurePaths = ['A/A.feature','B/B.feature','C/C.feature','D/D.feature','E/E.feature']
    labelPaths = ['A/A.label','B/B.label','C/C.label','D/D.label','E/E.label']
    ''' 读入数据  '''
    x_train,y_train = load_datasets(featurePaths[:4],labelPaths[:4])
    x_test,y_test = load_datasets(featurePaths[4:],labelPaths[4:])
    x_train, x_, y_train, y_ = train_test_split(x_train, y_train, test_size = 0.0)
     
    print('Start training knn')
    knn = KNeighborsClassifier().fit(x_train, y_train)
    print('Training done')
    answer_knn = knn.predict(x_test)
    print('Prediction done')
     
    print('Start training DT')
    dt = DecisionTreeClassifier().fit(x_train, y_train)
    print('Training done')
    answer_dt = dt.predict(x_test)
    print('Prediction done')
     
    print('Start training Bayes')
    gnb = GaussianNB().fit(x_train, y_train)
    print('Training done')
    answer_gnb = gnb.predict(x_test)
    print('Prediction done')
     
    print('\n\nThe classification report for knn:')
    print(classification_report(y_test, answer_knn))
    print('\n\nThe classification report for DT:')
    print(classification_report(y_test, answer_dt))
    print('\n\nThe classification report for Bayes:')
    print(classification_report(y_test, answer_gnb)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习分类问题是指将数据集中的样本划分到不同的类别中,常见的应用包括垃圾邮件过滤、图像识别和疾病预测等。在实战中,我们可以按照以下步骤进行: 1. 数据收集和预处理:收集包含标记的数据集,并进行数据清洗、特征选择和特征编码等预处理操作。 2. 特征工程:根据问题和数据的特点,对原始特征进行转换、组合或创建新的特征。这有助于提取更有用的信息,提高模型性能。 3. 数据集划分:将数据集划分为训练集、验证集和测试集。训练集用于模型的训练,验证集用于调整模型参数和选择模型,测试集用于评估模型的性能。 4. 模型选择和训练:选择适合问题分类算法,如逻辑回归、决策树、支持向量机、随机森林等,并使用训练集对模型进行训练。 5. 模型评估和调优:使用验证集评估模型的性能,根据评估结果调整模型参数,尝试不同的算法和特征工程方法,以提高模型的准确性和泛化能力。 6. 模型预测:使用经过调优的模型对测试集进行预测,并评估模型的性能指标,如准确率、召回率、F1值等。 7. 模型部署:将训练好的模型部署到实际应用中,进行实时预测或批量预测。 这些步骤并不是一成不变的,具体的实施方法可能会因问题的不同而有所差异。在实战中,还需要不断地迭代和优化模型,以提高分类效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值