二十二、分类与预测

1. 分类与预测

分类的概念

  • 预测分类标号(或离散值)

  • 根据训练数据集和类标号属性,构建模型来分类现有数据, 并用来分类新数据
    预测

  • 预测分类标号(或离散值)建立连续函数值模型,预测新事物

分类举例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MvqOjE0Z-1585208044103)(01.png)]
分类问题的实施过程
在这里插入图片描述
分类问题的基本要素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tfPCDjgP-1585208044107)(03.png)]
分类问题的应用场景
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oXt29OPe-1585208044109)(04.png)]
常用的分类算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cQXvQXLr-1585208044111)(05.png)]

2. 决策树分类算法

认识决策树
如何根据观看电影记录预测用户喜欢哪一种类型的电影?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXwpjO5z-1585208044113)(06.png)]
决策树的形式
决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。
在这里插入图片描述
如何构建决策树
在这里插入图片描述
决策树分类算法——熵的概念
在这里插入图片描述
决策树分类算法——熵的计算
在这里插入图片描述
决策树分类算法——熵计算例子
在这里插入图片描述
决策树分类算法——观影信息的熵
在这里插入图片描述
决策树分类算法——属性选择
在这里插入图片描述
决策树分类算法——算法实战
在这里插入图片描述
数据集

id,type,country,gross,watch
1,anime,Janan,low,yes
2,science,America,low,yes
,anime,America,low,yes
4,action,America,high,yes
5,action,China,high,yes
6,anime,China,low,yes
7,science,France,low,no
8,action,China,low,no

工具库

graphviz	0.13.2	
numpy	1.18.0
pydotplus	2.0.2
sklearn

代码实现

import csv
import os
os.environ["PATH"] += os.pathsep + 'D:\\Program Files\\Graphviz2.38\\bin'

from sklearn.feature_extraction import DictVectorizer
from sklearn import preprocessing
from sklearn import tree

film_data = open('film.csv', 'rt')
reader = csv.reader(film_data)

# 表头信息
headers = next(reader)
print(headers)

feature_list = [] # 特征值
result_list = []  # 结果

for row in reader:
    result_list.append(row[-1])

    # 去掉首位两列,特征集中只保留'type', 'country', 'gross'
    feature_list.append(dict(zip(headers[1:-1], row[1:-1])))

print(result_list)
print(feature_list)

vec = DictVectorizer()  # 将dict类型的list数据,转换成numpy array
dummyX = vec.fit_transform(feature_list).toarray()
dummyY = preprocessing.LabelBinarizer().fit_transform(result_list)

# country   |,gross|,type
# 0,0,0 , 0 |0,0,|0 , 0,0

# 注意,dummyX是按首字母排序的 'country','gross','type'
print(dummyX)
print(dummyY)

clf = tree.DecisionTreeClassifier(criterion='entropy', random_state=0)
clf = clf.fit(dummyX, dummyY)
print("clf: " + str(clf))

import pydotplus

dot_data = tree.export_graphviz(clf,
                                feature_names=vec.get_feature_names(),
                                filled=True, rounded=True,
                                special_characters=True,
                                out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("film.pdf")

# # 开始预测
A = ([[0, 0, 0, 1, 0, 1, 0, 1, 0]]) # 日本(4)-低票房(2)-动画片(3)
B = ([[0, 0, 1, 0, 0, 1, 0, 1, 0]]) # 法国(4)-低票房(2)-动画片(3)
C = ([[1, 0, 0, 0, 1, 0, 1, 0, 0]]) # 美国(4)-高票房(2)-动作片(3)
#
predict_result = clf.predict(C)
print("预测结果: " + str(predict_result))
([[1, 0, 0, 0, 1, 0, 1, 0, 0]]) # 美国(4)-高票房(2)-动作片(3) #
predict_result = clf.predict(C)
print("预测结果: " + str(predict_result))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值