大数据-基于不同算法对数据进行猜测

打印 上一主题 下一主题

主题 898|帖子 898|积分 2694

目录
1.数据清洗
1.1缺失值处理
1.2非常值检测
1.3数据尺度化
2.数据预备
2.1特性工程
2.2数据集分别(训练集与测试集)
3.猜测算法应用
3.1逻辑回归
3.1.1算法原理
3.1.2实现过程
3.1.3输出结果
3.2支持向量机(SVM)
3.2.1算法原理
3.2.2实现过程
3.2.3输出结果
3.3K最近邻(KNN)
3.3.1算法原理
3.3.2实现过程
3.3.3输出结果
3.4决策树
3.4.1算法原理
3.4.2实现过程
3.4.3输出结果
3.5随机丛林
3.5.1算法原理
3.5.2实现过程
3.5.3输出结果
3.6淳厚贝叶斯
3.6.1算法原理
3.6.2实现过程
3.6.3输出结果
4.影响模型准确度的参数
4.1超参数
4.1.1超参数界说与重要性
4.1.2超参数调整方法(网格搜索、随机搜索等)
4.2数据相干参数
4.2.1特性选择与影响
4.2.2数据量与数据质量的影响
4.3其他影响因素
4.3.1模型复杂度
4.3.2训练方法与战略
5.模型评估
5.1评估指标(准确率、召回率等)
5.2模型对比分析



1.数据清洗

1.1缺失值处理

数据清洗是数据分析过程中至关重要的一步,目标是进步数据质量,为后续的分析和建模打下精良的基础
现有一个数据集——“train.csv”进行演示,对其进行幸存者的猜测,数据结构如下:
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
103Braund, Mr. Owen Harrismale2210A/5 211717.25S
211Cumings, Mrs. John Bradley (Florence Briggs Thayer)female3810PC 1759971.2833C85C
313Heikkinen, Miss. Lainafemale2600STON/O2. 31012827.925S
411Futrelle, Mrs. Jacques Heath (Lily May Peel)female351011380353.1C123S
503Allen, Mr. William Henrymale35003734508.05S
在数据集中,缺失值会影响模型的训练效果。因此,我们必要识别并处理缺失值。可以利用均值、中位数或众数添补缺失值,大概直接删除含有缺失值的样本。以下是处理缺失值的示例代码:
  1. import pandas as pd
  2. # 读取数据
  3. data = pd.read_csv('train.csv')
  4. # 查看缺失值情况
  5. print(data.isnull().sum())
  6. # 填充缺失的年龄值
  7. data['Age'].fillna(data['Age'].median(), inplace=True)
  8. # 填充缺失的舱位
  9. data['Embarked'].fillna(data['Embarked'].mode()[0], inplace=True)
  10. # 查看清洗后的数据
  11. print(data.isnull().sum())
复制代码
输出:
  
  1. PassengerId      0
  2. Survived         0
  3. Pclass           0
  4. Name             0
  5. Sex              0
  6. Age            177
  7. SibSp            0
  8. Parch            0
  9. Ticket           0
  10. Fare             0
  11. Cabin          687
  12. Embarked         2
  13. dtype: int64
  14. PassengerId      0
  15. Survived         0
  16. Pclass           0
  17. Name             0
  18. Sex              0
  19. Age              0
  20. SibSp            0
  21. Parch            0
  22. Ticket           0
  23. Fare             0
  24. Cabin          687
  25. Embarked         0
  26. dtype: int64
复制代码
1.2非常值检测

非常值大概会影响模型的准确性,因此必要识别并处理。可以利用箱形图(Boxplot)等方法检测非常值,并决定是否删除或调整它们。
  1. import seaborn as sns
  2. import matplotlib.pyplot as plt
  3. # 绘制箱形图
  4. sns.boxplot(x=data['Fare'])
  5. plt.show()
复制代码
输出:
 

1.3数据尺度化

尺度化是将数据转换为相同的尺度,以便在模型训练时各个特性的权重相对平衡。常用的尺度化方法包罗Z-score尺度化和Min-Max尺度化。
  1. from sklearn.preprocessing import StandardScaler
  2. scaler = StandardScaler()
  3. data[['Age', 'Fare']] = scaler.fit_transform(data[['Age', 'Fare']])
复制代码
2.数据预备

在数据预备阶段,我们必要进行特性工程和数据集分别。
2.1特性工程

特性工程是指从原始数据中提取有用的信息,以进步模型的性能。在此步骤中,我们将分类变量转换为数值变量,并选择对模型故意义的特性。
  1. # 特征选择
  2. features = data[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare']]
  3. features['Sex'] = features['Sex'].map({'male': 0, 'female': 1})
复制代码
2.2数据集分别(训练集与测试集)

将数据集分别为训练集和测试集是模型训练的重要步骤。通常,训练集占总数据的70%到80%,测试集占20%到30%。这可以通过train_test_split函数实现。
  1. from sklearn.model_selection import train_test_split
  2. # 目标变量
  3. target = data['Survived']
  4. # 划分训练集和测试集
  5. X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)
复制代码
3.猜测算法应用

3.1逻辑回归

3.1.1算法原理

逻辑回归是一种用于二分类问题的统计方法,假设特性与输出之间存在线性关系,并通过逻辑函数(sigmoid函数)将结果映射到0到1之间。
3.1.2实现过程

  1. from sklearn.linear_model import LogisticRegression
  2. from sklearn.metrics import accuracy_score
  3. # 逻辑回归模型
  4. model_lr = LogisticRegression()
  5. model_lr.fit(X_train, y_train)
  6. # 预测
  7. y_pred_lr = model_lr.predict(X_test)
  8. # 结果分析
  9. accuracy_lr = accuracy_score(y_test, y_pred_lr)
  10. print(f'逻辑回归准确率: {accuracy_lr:.2f}')
复制代码
3.1.3输出结果

逻辑回归通常在简单线性可分的数据集上表现精良
  
  1. 逻辑回归准确率: 0.81
复制代码
3.2支持向量机(SVM)

3.2.1算法原理

支持向量机通过探求最佳超平面,将不同类别的数据点分开。其主要目标是最大化分类间隔,从而进步模型的泛化能力。
3.2.2实现过程

  1. from sklearn.svm import SVC
  2. # 支持向量机模型
  3. model_svm = SVC()
  4. model_svm.fit(X_train, y_train)
  5. # 预测
  6. y_pred_svm = model_svm.predict(X_test)
  7. # 结果分析
  8. accuracy_svm = accuracy_score(y_test, y_pred_svm)
  9. print(f'SVM准确率: {accuracy_svm:.2f}')
复制代码
3.2.3输出结果

SVM在处理高维数据时表现优异,但对大数据集的计算开销较大。
  
  1. SVM准确率: 0.82
复制代码
3.3K最近邻(KNN)

3.3.1算法原理

KNN是一种基于实例的学习方法,通过丈量新样本与训练样本之间的距离(如欧氏距离)进行分类。
3.3.2实现过程

  1. from sklearn.neighbors import KNeighborsClassifier
  2. # KNN模型
  3. model_knn = KNeighborsClassifier(n_neighbors=5)
  4. model_knn.fit(X_train, y_train)
  5. # 预测
  6. y_pred_knn = model_knn.predict(X_test)
  7. # 结果分析
  8. accuracy_knn = accuracy_score(y_test, y_pred_knn)
  9. print(f'KNN准确率: {accuracy_knn:.2f}')
复制代码
3.3.3输出结果

KNN对于数据量较小且特性较少的情况效果精良,但计算复杂度随数据量增长而敏捷上升。
  
  1. KNN准确率: 0.80
复制代码
3.4决策树

3.4.1算法原理

决策树通过递归地分割数据集,以构建树形结构进行决策。每个节点代表一个特性,每条边代表一个特性的取值。
3.4.2实现过程

  1. from sklearn.tree import DecisionTreeClassifier
  2. # 决策树模型
  3. model_dt = DecisionTreeClassifier()
  4. model_dt.fit(X_train, y_train)
  5. # 预测
  6. y_pred_dt = model_dt.predict(X_test)
  7. # 结果分析
  8. accuracy_dt = accuracy_score(y_test, y_pred_dt)
  9. print(f'决策树准确率: {accuracy_dt:.2f}')
复制代码
3.4.3输出结果

决策树易于明确和解释,但容易出现过拟合征象。
  
  1. 决策树准确率: 0.76
复制代码
3.5随机丛林

3.5.1算法原理

随机丛林是基于决策树的集成学习方法,通过构建多个决策树并进行投票,以进步模型的准确性和鲁棒性。
3.5.2实现过程

  1. from sklearn.ensemble import RandomForestClassifier
  2. # 随机森林模型
  3. model_rf = RandomForestClassifier(n_estimators=100)
  4. model_rf.fit(X_train, y_train)
  5. # 预测
  6. y_pred_rf = model_rf.predict(X_test)
  7. # 结果分析
  8. accuracy_rf = accuracy_score(y_test, y_pred_rf)
  9. print(f'随机森林准确率: {accuracy_rf:.2f}')
复制代码
3.5.3输出结果

随机丛林能有用减少过拟合征象,并在多数情况下提供更高的准确率。
  
  1. 随机森林准确率: 0.80
复制代码
3.6淳厚贝叶斯

3.6.1算法原理

淳厚贝叶斯基于贝叶斯定理,假设特性之间相互独立,得当于文本分类等高维数据的场景。
3.6.2实现过程

  1. from sklearn.naive_bayes import GaussianNB
  2. # 朴素贝叶斯模型
  3. model_nb = GaussianNB()
  4. model_nb.fit(X_train, y_train)
  5. # 预测
  6. y_pred_nb = model_nb.predict(X_test)
  7. # 结果分析
  8. accuracy_nb = accuracy_score(y_test, y_pred_nb)
  9. print(f'朴素贝叶斯准确率: {accuracy_nb:.2f}')
复制代码
3.6.3输出结果

淳厚贝叶斯在假设建立的情况下表现精良,尤其实用于大规模数据集。
  
  1. 朴素贝叶斯准确率: 0.77
复制代码
4.影响模型准确度的参数

4.1超参数

在模型训练中,影响模型准确度的参数主要包罗超参数、数据相干参数和其他因素。
4.1.1超参数界说与重要性

超参数是模型在训练之前必要设置的参数,通常对模型性能有明显影响。选择符合的超参数可以有用提拔模型的准确率。
4.1.2超参数调整方法(网格搜索、随机搜索等)

常用的超参数调整方法包罗网格搜索和随机搜索。这些方法通过交叉验证选择最佳参数组合。
以SVC示例:
  1. from sklearn.svm import SVC
  2. from sklearn.metrics import accuracy_score
  3. from sklearn.model_selection import GridSearchCV
  4. # 原始支持向量机模型
  5. model_svm = SVC(kernel='linear')
  6. model_svm.fit(X_train, y_train)
  7. # 预测原始模型的准确率
  8. y_pred_svm = model_svm.predict(X_test)
  9. original_accuracy = accuracy_score(y_test, y_pred_svm)
  10. print(f'原始模型准确率: {original_accuracy:.2f}')
  11. # 超参数调整示例
  12. param_grid = {'C': [0.1, 1, 10], 'gamma': ['scale', 'auto']}
  13. grid_search = GridSearchCV(SVC(), param_grid, cv=5)
  14. grid_search.fit(X_train, y_train)
  15. # 输出最佳参数及其对应的准确率
  16. best_model = grid_search.best_estimator_
  17. y_pred_best = best_model.predict(X_test)
  18. best_accuracy = accuracy_score(y_test, y_pred_best)
  19. print(f'最佳参数: {grid_search.best_params_}')
  20. print(f'最佳参数下的准确率: {best_accuracy:.2f}')
复制代码
  1. 原始模型准确率: 0.78
  2. 最佳参数: {'C': 10, 'gamma': 'scale'}
  3. 最佳参数下的准确率: 0.81
复制代码
4.2数据相干参数

4.2.1特性选择与影响

选择符合的特性对模型的性能至关重要。特性选择可以通过相干性分析、递归特性消除等方法进行。
4.2.2数据量与数据质量的影响

数据量的增长通常能进步模型的泛化能力,而数据质量直接关系到模型的准确性。确保数据的准确性和同等性至关重要。
4.3其他影响因素

4.3.1模型复杂度

模型复杂度指模型的灵活性,复杂度过高容易导致过拟合,而复杂度过低大概导致欠拟合。
4.3.2训练方法与战略

选择符合的训练方法和战略,如交叉验证和早停法,能够进步模型的稳固性和准确性。
5.模型评估

5.1评估指标(准确率、召回率等)

模型评估是验证模型性能的重要步骤,评估指标包罗准确率、召回率、F1-score等。
5.2模型对比分析

  1. from sklearn.metrics import classification_report
  2. print("逻辑回归报告:")
  3. print(classification_report(y_test, y_pred_lr))
  4. print("SVM报告:")
  5. print(classification_report(y_test, y_pred_svm))
  6. print("KNN报告:")
  7. print(classification_report(y_test, y_pred_knn))
  8. print("决策树报告:")
  9. print(classification_report(y_test, y_pred_dt))
  10. print("随机森林报告:")
  11. print(classification_report(y_test, y_pred_rf))
  12. print("朴素贝叶斯报告:")
  13. print(classification_report(y_test, y_pred_nb))
复制代码
输出结果:
  
  1. 逻辑回归报告:
  2.               precision    recall  f1-score   support
  3.            0       0.81      0.88      0.84       105
  4.            1       0.80      0.72      0.76        74
  5.     accuracy                           0.81       179
  6.    macro avg       0.81      0.80      0.80       179
  7. weighted avg       0.81      0.81      0.81       179
  8. SVM报告:
  9.               precision    recall  f1-score   support
  10.            0       0.80      0.84      0.82       105
  11.            1       0.75      0.70      0.73        74
  12.     accuracy                           0.78       179
  13.    macro avg       0.78      0.77      0.77       179
  14. weighted avg       0.78      0.78      0.78       179
  15. KNN报告:
  16.               precision    recall  f1-score   support
  17.            0       0.82      0.85      0.84       105
  18.            1       0.77      0.74      0.76        74
  19.     accuracy                           0.80       179
  20.    macro avg       0.80      0.80      0.80       179
  21. weighted avg       0.80      0.80      0.80       179
  22. 决策树报告:
  23.               precision    recall  f1-score   support
  24.            0       0.80      0.78      0.79       105
  25.            1       0.70      0.73      0.72        74
  26.     accuracy                           0.76       179
  27.    macro avg       0.75      0.76      0.75       179
  28. weighted avg       0.76      0.76      0.76       179
  29. 随机森林报告:
  30.               precision    recall  f1-score   support
  31.            0       0.82      0.85      0.83       105
  32.            1       0.77      0.73      0.75        74
  33.     accuracy                           0.80       179
  34.    macro avg       0.79      0.79      0.79       179
  35. weighted avg       0.80      0.80      0.80       179
  36. 朴素贝叶斯报告:
  37.               precision    recall  f1-score   support
  38.            0       0.80      0.81      0.81       105
  39.            1       0.73      0.72      0.72        74
  40.     accuracy                           0.77       179
  41.    macro avg       0.76      0.76      0.76       179
  42. weighted avg       0.77      0.77      0.77       179
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表