【python代码实现】决策树分类算法、朴素贝叶斯分类算法以及人工神经网络分类算法的代码及数据
时间: 2023-07-05 09:09:26 浏览: 41
以下是三种分类算法的实现代码和数据。
1. 决策树分类算法
数据:
| 编号 | 年龄 | 收入 | 学历 | 是否有工作 | 是否有房 |
| ---- | ---- | ---- | ---- | ---------- | -------- |
| 1 | 青年 | 高 | 否 | 否 | 否 |
| 2 | 青年 | 高 | 否 | 否 | 否 |
| 3 | 青年 | 中 | 否 | 是 | 否 |
| 4 | 青年 | 低 | 是 | 是 | 否 |
| 5 | 青年 | 低 | 是 | 是 | 否 |
| 6 | 中年 | 低 | 是 | 是 | 是 |
| 7 | 中年 | 中 | 是 | 是 | 是 |
| 8 | 中年 | 高 | 否 | 是 | 是 |
| 9 | 中年 | 高 | 是 | 是 | 是 |
| 10 | 老年 | 中 | 是 | 是 | 是 |
| 11 | 老年 | 中 | 是 | 是 | 是 |
| 12 | 老年 | 中 | 否 | 是 | 是 |
| 13 | 老年 | 高 | 否 | 否 | 否 |
| 14 | 老年 | 中 | 否 | 否 | 否 |
| 15 | 老年 | 高 | 否 | 否 | 否 |
代码:
```
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 读取数据
data = pd.read_csv('decision_tree_data.csv')
# 将特征和目标分开
X = data.iloc[:, :-1]
Y = data.iloc[:, -1]
# 划分训练集和测试集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=0)
# 建立决策树模型
model = DecisionTreeClassifier(criterion='entropy')
model.fit(X_train, Y_train)
# 预测测试集
Y_pred = model.predict(X_test)
# 输出预测准确率
print('Accuracy:', accuracy_score(Y_test, Y_pred))
```
2. 朴素贝叶斯分类算法
数据:
| 编号 | 是否有房 | 是否有车 | 收入 | 类别 |
| ---- | -------- | -------- | ---- | ---- |
| 1 | 否 | 否 | 高 | 否 |
| 2 | 否 | 否 | 高 | 否 |
| 3 | 是 | 否 | 高 | 是 |
| 4 | 是 | 是 | 中 | 是 |
| 5 | 是 | 是 | 低 | 是 |
| 6 | 否 | 是 | 低 | 否 |
| 7 | 否 | 是 | 低 | 否 |
代码:
```
import pandas as pd
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 读取数据
data = pd.read_csv('naive_bayes_data.csv')
# 将特征和目标分开
X = data.iloc[:, :-1]
Y = data.iloc[:, -1]
# 划分训练集和测试集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=0)
# 建立朴素贝叶斯模型
model = GaussianNB()
model.fit(X_train, Y_train)
# 预测测试集
Y_pred = model.predict(X_test)
# 输出预测准确率
print('Accuracy:', accuracy_score(Y_test, Y_pred))
```
3. 人工神经网络分类算法
数据:
| 编号 | X1 | X2 | 类别 |
| ---- | --------- | --------- | ---- |
| 1 | 0.697 | 0.460 | 1 |
| 2 | 0.774 | 0.376 | 1 |
| 3 | 0.634 | 0.264 | 1 |
| 4 | 0.608 | 0.318 | 1 |
| 5 | 0.556 | 0.215 | 1 |
| 6 | 0.403 | 0.237 | 1 |
| 7 | 0.481 | 0.149 | 1 |
| 8 | 0.437 | 0.211 | 1 |
| 9 | 0.666 | 0.091 | 0 |
| 10 | 0.243 | 0.267 | 0 |
| 11 | 0.245 | 0.057 | 0 |
| 12 | 0.343 | 0.099 | 0 |
| 13 | 0.639 | 0.161 | 0 |
| 14 | 0.657 | 0.198 | 0 |
| 15 | 0.360 | 0.370 | 0 |
| 16 | 0.593 | 0.042 | 0 |
| 17 | 0.719 | 0.103 | 0 |
代码:
```
import pandas as pd
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 读取数据
data = pd.read_csv('neural_network_data.csv')
# 将特征和目标分开
X = data.iloc[:, :-1]
Y = data.iloc[:, -1]
# 划分训练集和测试集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=0)
# 建立神经网络模型
model = MLPClassifier(hidden_layer_sizes=(5, 2), max_iter=1000)
model.fit(X_train, Y_train)
# 预测测试集
Y_pred = model.predict(X_test)
# 输出预测准确率
print('Accuracy:', accuracy_score(Y_test, Y_pred))
```