加载数据并预处理–创建分类器–训练分类器–在测试集上得到预测结果–计算准确率和召回率
import numpy
import pandas
from sklearn.metrics import classification_report#导入预测结果评估模块
from sklearn.model_selection import train_test_split,cross_val_score#导入自动生成训练集和测试集的模块
f = 'filepath'
data = pandas.read_csv(f+'data_train.txt',delimiter=' ',header=None)
X = data[list(range(10))]
y = data[10] #10折交叉验\
data_train = data.sample(frac=0.9)
data_test = data.iloc[list(set(data.index)-set(data_train.index))]
y_train = data_train[10]
x_train = data_train[list(range(10))]
y_test = data_test[10]
x_test = data_test[list(range(10))]
通过计算带分类的数据点,与已有训练集的中的所有数据点的距离,取最小的前K个点,根据‘’少数服从多数的原则‘’进行划分。
基本方法如下`。
from sklearn.neighbors import KNeighborsClassifier #导入K近邻分类器
KNN = KNeighborsClassifier().fit(x_train, y_train) # 使用KNN算法进行训练并生成预处理结果
test = pd.read_csv(f+'data_test.txt',delimiter=' ',header=None)
answer_knn = KNN.predict(test)
print('\n\nThe classification report for knn:')
np.savetxt('filepath+txtname.txt',answer_knn,fmt='%d',newline='\r\n')
一种树状结构的分类器,通过属性决定分类点的最终类别,通常根据特征的信息增益或其他指标,构建一颗决策树,分类时对节点进行依此判断,即可得到结果。
展示:
首先导入所需要的分类器
from sklearn.metrics import classification_report
from sklearn.tree import DecisionTreeClassifier #使用import语句导入决策树分类器
处理数据进行训练并预测
DTC = DecisionTreeClassifier(criterion='entropy').fit(x_train,y_train)
ans_DTC = DTC.predict(x_test)
print(classification_report(y_test,ans_DTC)) #采用全量数据训练模型并将预测结果输出
DTC = DecisionTreeClassifier(criterion='entropy').fit(X,y)
test = pd.read_csv(f+'data_test.txt',delimiter=' ',header=None)
ans = DTC.predict(test)
np.savetxt('filepath+txtname.txt',ans,fmt='%d',newline='\r\n')#产生的文件存放在打他文件夹中
以贝叶斯定理为基础的多分类的分类器,对于给定数据,首先基于特征的条件独立假设性假设,学习输入输出的联合概率分布,基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大的输出y
展示:
导入高斯分类器
from sklearn.naive_bayes import GaussianNB #高斯朴素贝叶斯函数
对数据进行训练
BYS = GaussianNB().fit(x_train, y_train) #使用贝叶斯算法进行训练
test = pd.read_csv(f+'data_test.txt',delimiter=' ',header=None)
answer_BYS = BYS.predict(test)
#对分类结果从 精确率precision 召回率recall f1值fl-score和支持度support四个维度进行衡量
print('\n\nThe classification report for Bayes:')
np.savetxt('filepath+txtname.txt',answer_BYS,fmt='%d',newline='\r\n')