给你一个网站怎么做,网站这么设置微信支付宝,网站舆情监控怎么做,显示浏览次数 single wordpress#x1f388;边走、边悟#x1f388;迟早会好
一、概念
机器学习是一种利用数据来改进模型性能的计算方法#xff0c;属于人工智能的一个分支。它旨在让计算机系统通过经验自动改进#xff0c;而不需要明确编程。
类型
监督学习#xff1a;使用带标签的数据进行训练边走、边悟迟早会好
一、概念
机器学习是一种利用数据来改进模型性能的计算方法属于人工智能的一个分支。它旨在让计算机系统通过经验自动改进而不需要明确编程。
类型
监督学习使用带标签的数据进行训练包括分类如垃圾邮件检测和回归如房价预测。无监督学习使用不带标签的数据进行训练包括聚类如客户细分和降维如主成分分析。强化学习通过与环境的交互学习策略以最大化累积奖励如AlphaGo。
二、 常见算法
2.1监督学习算法
线性回归用于回归任务假设目标变量与输入特征之间存在线性关系。逻辑回归用于二分类任务输出一个介于0和1之间的概率。决策树树状结构的模型易于理解和解释。支持向量机SVM寻找能够最大化类间间隔的决策边界。K近邻KNN基于距离度量的简单算法预测时考虑最近的K个邻居。朴素贝叶斯基于贝叶斯定理的分类算法假设特征之间条件独立。
2.2无监督学习算法
K均值聚类将数据分成K个簇使得簇内数据的相似度最大。层次聚类构建一个层次结构的聚类树逐步合并或分割簇。主成分分析PCA将高维数据投影到低维空间保留数据的主要变异信息。独立成分分析ICA类似于PCA但假设数据成分相互独立。
2.3强化学习算法
Q学习基于状态-动作对的值函数通过Q值迭代更新策略。深度Q网络DQN结合深度学习的Q学习算法用神经网络近似Q值。策略梯度方法直接优化策略使得期望奖励最大化。
三.、模型评估
评估指标 分类
准确率正确预测的样本数占总样本数的比例。精确率预测为正类的样本中实际为正类的比例。召回率实际为正类的样本中被正确预测为正类的比例。F1分数精确率和召回率的调和平均数。混淆矩阵总结预测结果的矩阵显示真阳性、假阳性、真阴性和假阴性。
回归
均方误差MSE预测值与真实值之差的平方和的平均数。均方根误差RMSEMSE的平方根。平均绝对误差MAE预测值与真实值之差的绝对值的平均数。R²解释回归模型对数据变异的比例。
交叉验证 通过将数据集划分为若干子集反复进行训练和验证以评估模型的性能稳定性和泛化能力。
四、 优化技术
4.1 超参数优化
网格搜索对所有可能的参数组合进行穷举搜索找到最佳参数组合。随机搜索随机选择参数组合进行搜索相对高效。贝叶斯优化利用贝叶斯推理逐步优化参数选择过程。
4.2 正则化
通过在损失函数中添加正则项防止过拟合
L1正则化加入参数的绝对值和Lasso回归。L2正则化加入参数的平方和Ridge回归。
4.3 特征选择
选择对模型性能影响较大的特征去除冗余或相关性高的特征。
五、 常见问题及解决方法
5.1 过拟合与欠拟合
过拟合模型在训练集上表现良好但在测试集上表现差。解决方法包括增加数据量、正则化、使用更简单的模型等。欠拟合模型在训练集上和测试集上都表现不佳。解决方法包括增加模型复杂度、添加更多特征等。
5.2 数据不平衡
当某一类样本数量远多于其他类时模型可能偏向于预测多数类。解决方法包括重采样、调整分类阈值、使用加权损失函数等。 六、入门经典案例
1. 鸢尾花数据集分类Iris Dataset Classification
背景 鸢尾花数据集是机器学习领域中非常经典的数据集由英国统计学家和生物学家Fisher在1936年提出。该数据集包含150个样本每个样本有4个特征花萼长度、花萼宽度、花瓣长度和花瓣宽度。目标是根据这些特征将鸢尾花分为三类山鸢尾Setosa、变色鸢尾Versicolor和维吉尼亚鸢尾Virginica。
过程
数据预处理加载数据并进行基本的清洗和探索性数据分析EDA。特征选择选择合适的特征来进行分类。数据划分将数据集分为训练集和测试集一般采用80/20或70/30的比例。模型选择选择合适的分类算法如K近邻KNN、支持向量机SVM、决策树Decision Tree等。模型训练在训练集上训练模型。模型评估在测试集上评估模型的性能常用的评估指标包括准确率、混淆矩阵、F1分数等。模型优化根据评估结果进行参数调优或选择其他模型。
详解
# 示例代码以KNN为例
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix# 加载数据
iris load_iris()
X iris.data
y iris.target# 数据划分
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 模型训练
knn KNeighborsClassifier(n_neighbors3)
knn.fit(X_train, y_train)# 模型预测
y_pred knn.predict(X_test)# 模型评估
print(Accuracy:, accuracy_score(y_test, y_pred))
print(Confusion Matrix:\n, confusion_matrix(y_test, y_pred))
print(Classification Report:\n, classification_report(y_test, y_pred))2. 房价预测Housing Price Prediction
背景
房价预测是回归问题的经典案例之一通常使用波士顿房价数据集。该数据集包含506个数据点每个数据点有13个特征如房间数量、房龄、犯罪率等目标是预测房屋的中位数价格。
过程
数据预处理加载数据处理缺失值和异常值进行EDA。特征工程选择重要特征并进行特征缩放。数据划分将数据集分为训练集和测试集。模型选择选择回归模型如线性回归Linear Regression、随机森林回归Random Forest Regression等。模型训练在训练集上训练模型。模型评估在测试集上评估模型性能常用评估指标包括均方误差MSE、均方根误差RMSE等。模型优化根据评估结果进行参数调优或选择其他模型。
详解
# 示例代码以线性回归为例
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 加载数据
boston load_boston()
X boston.data
y boston.target# 数据划分
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 模型训练
lr LinearRegression()
lr.fit(X_train, y_train)# 模型预测
y_pred lr.predict(X_test)# 模型评估
mse mean_squared_error(y_test, y_pred)
rmse mse ** 0.5
print(MSE:, mse)
print(RMSE:, rmse)3. 手写数字识别Digit Recognition
背景
手写数字识别是计算机视觉中的经典问题通常使用MNIST数据集。该数据集包含60000个训练样本和10000个测试样本每个样本是28x28像素的灰度图像代表手写的数字0-9。
过程
数据预处理加载数据并进行基本的图像处理。特征工程将图像数据展平或进行特征提取。数据划分将数据集分为训练集和测试集。模型选择选择分类模型如卷积神经网络CNN、支持向量机SVM等。模型训练在训练集上训练模型。模型评估在测试集上评估模型性能常用评估指标包括准确率、混淆矩阵等。模型优化根据评估结果进行参数调优或选择其他模型。
详解
# 示例代码以简单的多层感知机为例
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.utils import to_categorical# 加载数据
(X_train, y_train), (X_test, y_test) mnist.load_data()# 数据预处理
X_train X_train.reshape(-1, 28*28).astype(float32) / 255.0
X_test X_test.reshape(-1, 28*28).astype(float32) / 255.0
y_train to_categorical(y_train, 10)
y_test to_categorical(y_test, 10)# 构建模型
model Sequential([Flatten(input_shape(28*28,)),Dense(128, activationrelu),Dense(64, activationrelu),Dense(10, activationsoftmax)
])# 编译模型
model.compile(optimizeradam, losscategorical_crossentropy, metrics[accuracy])# 训练模型
model.fit(X_train, y_train, epochs10, batch_size32, validation_split0.2)# 评估模型
loss, accuracy model.evaluate(X_test, y_test)
print(Loss:, loss)
print(Accuracy:, accuracy)感谢支持 听忆.-CSDN博客 众口难调从心就好