machine learning basic
(本博客内容基于Kaggle教程,感谢:https://www.kaggle.com/learn/intro-to-machine-learning)
机器学习是啥?
简单说,就是让电脑从数据里学习,找到规律,然后用这些规律来做预测。
机器学习的几个步骤:
- 定义模型: 就像搭积木,选择用什么样的积木(算法)来搭建。
- 喂数据: 把数据给模型学习,让它找到数据里的规律。
- 做预测: 学习完后,让模型用学到的规律来预测新事物。
- 检验模型: 看看模型预测得准不准,好不好用。
Panda 介绍 (数据分析好帮手)
Panda是Python里超常用的数据分析工具,可以帮你整理和分析数据。
数据结构
- DataFrame: 像Excel表格一样,有行有列。
- Series: 像一列数据,DataFrame就是由很多Series组成的。
核心功能
- 读取和写入数据(比如CSV、Excel文件)。
- 清洗和处理数据(把乱七八糟的数据整理干净)。
- 筛选和过滤数据(找到你想要的数据)。
- 统计和计算数据(算平均值、总和等等)。
基本使用
1
2
3
4
5
6
7
8
9import pandas as pd
# 读取CSV文件
data = pd.read_csv('file.csv')
# 创建DataFrame
df = pd.DataFrame(data)
# 简单描述数据
df.describe()
# 显示头几行数据
df.head()
Sklearn 介绍 (机器学习工具箱)
Sklearn是Python里最火的机器学习库,里面有很多现成的算法可以直接用。
核心功能
- 分类算法(Classification): 比如判断邮件是不是垃圾邮件。
- 回归算法(Regression): 比如预测房价。
- 聚类算法(Clustering): 比如把用户分成不同的群体。
- 降维算法(Dimensionality Reduction): 简化数据,去除不重要的信息。
- 模型选择(Model Selection): 帮你找到最适合你的数据的算法。
主要优点
- 用起来简单。
- 文档写得很清楚。
- 用的人多,有问题容易找到答案。
- 能和NumPy、Pandas一起用,非常方便。
基本使用示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14from sklearn import datasets, model_selection
from sklearn.linear.model import LinearRegression
# 加载数据 (这里用的是波士顿房价数据)
data = datasets.load_boston()
# 划分训练集和测试集 (训练集用来训练模型,测试集用来检验模型)
X_train, X_test, y_train, y_test = model_selection.train_test_split(data.data, data.target, random_state=1)
# random_state 就像一个随机数种子,保证每次运行结果一样
# 创建模型 (这里用的是线性回归模型)
model = LinearRegression()
# 训练模型 (让模型学习训练集里的数据)
model.fit(X_train, y_train)
# 预测 (用模型来预测测试集里的数据)
prediction = model.predict(X_test)
模型检验 (看看模型靠不靠谱)
模型预测出来的值和真实值肯定有差距,这个差距就是误差。
MAE (Mean Absolute Error):平均绝对误差
- 就是把每个预测值的误差取绝对值,然后算个平均数。
- 为什么要取绝对值?因为误差有正有负,直接加起来可能会抵消掉。
MSE (Mean Squared Error):均方误差
- 就是把每个预测值的误差取平方,然后算个平均数。
- 取平方也能避免正负抵消的问题,而且还能放大误差。
过拟合 (Overfitting) 和 欠拟合 (Underfitting)
过拟合: 模型在训练数据上表现很好,但在新的数据上表现很差。就像一个学生只会做他见过的题,考试的时候就傻眼了。
- 原因: 模型学得太细了,把训练数据里的噪音也当成了规律。
- 特点:
- 方差高: 模型对数据的变化很敏感。
- 泛化能力弱: 只能在特定数据上表现好。
- 模型太复杂。
欠拟合: 模型在训练数据上和新的数据上表现都不好。就像一个学生什么都没学懂,考试肯定不及格。
- 原因: 模型学得太粗略了,没能抓住数据里的主要规律。
- 特点:
- 模型太简单。
- 数据有问题。
- 训练时间不够。
基础模型介绍
决策树 (Decision Tree)
- 像一个流程图,根据不同的条件来做判断。
- 比如:如果房子有两个厕所,价格就高于18000;如果没有,就低于18000。
随机森林 (Random Forest)
- 有很多棵决策树,每棵树都用一部分数据和特征来训练。
- 可以避免过拟合和欠拟合,提高模型的准确性。