数据挖掘|利用Python实现常用的分类算法
Posted 糙科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘|利用Python实现常用的分类算法相关的知识,希望对你有一定的参考价值。
文章:菜J学Python
0 1 数据分类
正所谓物以类聚人与群分,生活里很多东西都存在着分类,当你进入超市的时候有着“日常生活用品”,“零食区”,“衣服类”等等的分类,一个分类里有不同的商品。
from sklearn.datasets import load_iris
import numpy as np
dataset = load_iris()
x = dataset.data
y = dataset.target
print(dataset.DESCR)
import numpy as np
# data 为特征值
data = dataset.data
# target为分类类别
target = dataset.target
average_num = data.mean(axis = 0)
data = np.array(data > average_num,dtype = "int")
#print(dataset) # 可以自己尝试打印看看数据内容
from sklearn.model_selection import train_test_split
# 随机获得训练和测试集
def get_train_and_predict_set():
#对应的参数意义 data(待划分样本数据) target(样本数据的结果) random_state(设置随机种子,默认值为0 如果为0则的话每次随机结果都不一样,反之是一样的)
return train_test_split(data,target, random_state=14)
data_train,data_predict,target_train,target_predict = get_train_and_predict_set()
from collections import defaultdict
from operator import itemgetter
#定义函数训练特征
def train_feature(data_train,target_train,index,value):
"""
data_train:训练集特征
target_train:训练集类别
index:特征值的索引
value :特征值
"""
count = defaultdict(int)
for sample,class_name in zip(data_train,target_train):
if(sample[index] ==value):
count[class_name] += 1
# 进行排序
sort_class = sorted(count.items(),key=itemgetter(1),reverse = True)
# 拥有该特征最多的类别
max_class = sort_class[0][0]
max_num = sort_class[0][1]
all_num = 0
for class_name,class_num in sort_class:
all_num += class_num
# print("{}特征,值为{},错误数量为{}".format(index,value,all_num-max_num))
# 错误率
error = 1 - (max_num / all_num)
#最后返回使用给定特征值得到的待预测个体的类别和错误率
return max_class,error
def train():
errors = defaultdict(int)
class_names = defaultdict(list)
# 遍历特征
for i in range(data_train.shape[1]):
# 遍历特征值
for j in range(0,2):
class_name,error = train_feature(data_train,target_train,i,j)
errors[i] += error
class_names[i].append(class_name)
return errors,class_names
errors,class_names = train()
# 进行排序
sort_errors = sorted(errors.items(),key=itemgetter(1))
best_error = sort_errors[0]
best_feature = best_error[0]
best_class = class_names[best_feature]
print("最好的特征是{}".format(best_error[0]))
print(best_class)
# 进行预测
def predict(data_test,feature,best_class):
return np.array([best_class[int(data[feature])] for data in data_test])
result_predict = predict(data_predict,best_feature,best_class)
print("预测准确度{}".format(np.mean(result_predict == target_predict) * 100))
print("预测结果{}".format(result_predict))
以上是关于数据挖掘|利用Python实现常用的分类算法的主要内容,如果未能解决你的问题,请参考以下文章
PT之Transformer:基于PyTorch框架利用Transformer算法针对IMDB数据集实现情感分类的应用案例代码解析