当前位置:   article > 正文

【模型训练时的问题】特征不能是string的类型_模型训练某个字段可以为字符串吗

模型训练某个字段可以为字符串吗

在使用fit()函数之前,我们需要对数据集进行编码,这里可以使用两种方法:

LabelEncoder :将字符串转换为增量值
OneHotEncoder:使用One-of-K算法将字符串转换为整数

为了对string类型的数据序列化,需要先生成pandas数据,这样方便我们的序列化工作。这里我使用的方法是,原始数据->字典->pandas数据

决策树模型的可视化

# -*- coding: UTF-8 -*-
import pandas as pd
import pydotplus
from sklearn import tree
# from sklearn.externals.six import StringIO
from six import StringIO
from sklearn.preprocessing import LabelEncoder

if __name__ == '__main__':
    with open('lenses.txt', 'r') as fr:  # 加载文件
        lenses = [inst.strip().split('\t') for inst in fr.readlines()]  # 处理文件
    lenses_target = []  # 提取每组数据的类别,保存在列表里
    for each in lenses:
        lenses_target.append(each[-1])
    # print(lenses_target) 这里输出的是类别标签

    lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate']  # 特征标签
    lenses_list = []  # 保存lenses数据的临时列表
    lenses_dict = {}  # 保存lenses数据的字典,用于生成pandas
    for each_label in lensesLabels:  # 提取信息,生成字典
        for each in lenses:
            lenses_list.append(each[lensesLabels.index(each_label)])
        lenses_dict[each_label] = lenses_list
        lenses_list = []
    # print(lenses_dict)														#打印字典信息
    lenses_pd = pd.DataFrame(lenses_dict)  # 生成pandas.DataFrame
    # print(lenses_pd)														#打印pandas.DataFrame
    le = LabelEncoder()  # 创建LabelEncoder()对象,用于序列化
    for col in lenses_pd.columns:  # 序列化
        lenses_pd[col] = le.fit_transform(lenses_pd[col])
    # print(lenses_pd)														#打印编码信息

    clf = tree.DecisionTreeClassifier(max_depth=4)  # 创建DecisionTreeClassifier()类
    clf = clf.fit(lenses_pd.values.tolist(), lenses_target)  # 使用数据,构建决策树

    '''
    绘制决策树用的代码
    '''
    # dot_data = StringIO()
    # tree.export_graphviz(clf, out_file=dot_data,  # 绘制决策树
    #                      feature_names=lenses_pd.keys(),
    #                      class_names=clf.classes_,
    #                      filled=True, rounded=True,
    #                      special_characters=True)
    # graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
    # graph.write_pdf("tree.pdf")  # 保存绘制好的决策树,以PDF的形式存储。
    # print('决策树已保存为PDF文件')

    print(clf.predict([[1, 1, 1, 100]]))  # 预测
    print('决策树预测完成')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/988849
推荐阅读
相关标签
  

闽ICP备14008679号