问题描述
- 某企业现需要将自己的客户分为两类,分别记为
第0类和第1类。为进行分类,企业对客户的特征进行了量化,
针对每个客户建立特征向量,该向量包含两个元素。企业对
历史资料进行分析,建立了训练集。
目标
数据集
- 训练集 data0.txt 包含了第0类顾客及其特征向量
data1.txt 包含了第1类顾客及其特征向量 - 目标集 objdata.txt 包含需要分类的目标顾客
算法阐述
- 导入训练集数据,将训练集中两类数据进行合并(使用numpy库中的concatenate()方法对多维数组进行合并),其次时建立决策树分类器,使用决策树分类器中的fit()方法进行训练集的训练,分类。再次使用predict()函数进行目标集的预测。
代码
from sklearn.datasets import make_blobs
from sklearn import tree
import numpy as np
from matplotlib import pyplot as plt
import os
x = np.loadtxt('data0.txt')
y = np.loadtxt('data1.txt')
z1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
z2=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
os.system("python loaddatafun.py")
targetdataset = np.loadtxt('objdata.txt')
grid=np.concatenate([x,y])
print(grid)
b=z1+z2
clf = tree.DecisionTreeClassifier()
clf = clf.fit(grid,b)
result = clf.predict(targetdataset)
print(result)
k=1
z=0
for i in result:
if i==0:
plt.scatter(targetdataset[z:k,0],targetdataset[z:k,1],c='r')
else:
plt.scatter(targetdataset[z:k,0],targetdataset[z:k,1],c='g')
z=z+1
k=k+1
plt.show()
结果
训练集
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120141947988.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZXpoZV9fX19f,size_16,color_FFFFFF,t_70#pic_center)
目标集分类
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012014242966.PNG#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120142436506.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZXpoZV9fX19f,size_16,color_FFFFFF,t_70#pic_center)