从0开始学习机器学习--Day3--矩阵的基本运算及多元梯度下降

矩阵和向量(Matries and vectors)

矩阵:由数字组成的矩形阵列并写在方括号内,例如\begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix},而矩阵的维数等于行数乘以列数,所以像我们提到的这个矩阵就可以成为一个3×3的矩阵,也能写作R^{3\times3}

如果想要表达矩阵的某一项,我们会用A_{ij}的形式,例如 A = \begin{bmatrix} 3 & 7 & 15 \\ 4 & 9 & 6 \end{bmatrix},则A_{13} = 15表示矩阵A第一行第三列对应的那一项,注意所写的数字不能超过矩阵本身的行数和列数。

向量:是只有一列的矩阵,例如\begin{bmatrix} 5 \\ 4 \\ 6 \end{bmatrix},类似的,我们用 y_{i}的形式来表示向量的某一项。一个全是未知项的向量可以写成y = \begin{bmatrix} y_{1} \\ y_{2} \\ y_{3} \\ y_{4} \end{bmatrix},有时第一项也会从y_{0}开始。

矩阵的加法和标量乘法(Matries' addition and scalar multiplication)

矩阵的加减法比较简单,就是直接将两个矩阵对应的每一项加在一起,例如

### 使用 Python 和机器学习模型进行天气预报 #### 数据准备 为了建立有效的天气预报模型,数据收集至关重要。通常情况下,气象数据可以从公开API获取,如OpenWeatherMap API或其他政府提供的气象服务接口。这些数据应至少包含温度、湿度、气压等基本信息。 对于特定应用案例,在环境数据的选择上可以更加聚焦于影响天气变化的关键因素[^4]。例如,在某些场景下可能仅选用温度和风速作为特征输入来简化模型复杂度并提高效率;同时去除那些对结果贡献较小甚至可能导致噪声增加的因素,比如风向。 #### 特征工程 在构建预测模型之前,还需要做好充分的预处理工作——即所谓的“特征工程”。这一步骤旨在从原始采集到的信息中提取出有助于提升算法性能的新属性或转换现有字段使其更适合后续计算需求。具体措施包括但不限于: - **时间戳解析**:将日期字符串转化为易于操作的时间对象; - **周期性变量编码**:针对具有循环性质的数据项(像月份),采用正弦/余弦变换等方式表示其内在规律; - **滞后效应引入**:利用过去一段时间内的观测记录创建新的维度,帮助捕捉潜在模式; - **异常值检测与修正**:识别并合理处置偏离正常范围过多的数据点以免干扰整体判断准确性。 ```python import pandas as pd from datetime import datetime, timedelta def preprocess_data(df): df['datetime'] = pd.to_datetime(df['date']) # Extracting time features df['year'] = df['datetime'].dt.year df['month_sin'], df['month_cos'] = zip(*df['datetime'].apply(lambda dt: ( np.sin(2 * np.pi * dt.month / 12), np.cos(2 * np.pi * dt.month / 12)))) # Adding lagged values of temperature and wind speed for i in range(1,9): df[f'temp_lag{i}'] = df['temperature'].shift(i) df[f'wind_speed_lag{i}'] = df['wind_speed'].shift(i) return df.dropna() ``` #### 模型训练 一旦完成了上述准备工作,则可以根据实际业务目标挑选合适的监督式学习方法来进行建模尝试。这里推荐使用Scikit-Learn库中的随机森林回归器(RandomForestRegressor),因为它不仅能够很好地应对多维连续型输出问题,而且具备较强的泛化能力不易过拟合。 当然如果追求更高的精度以及更复杂的非线性关系表达的话,还可以考虑基于梯度下降优化策略开发出来的集成框架XGBoost或者LightGBM,它们特别擅长处理大规模稀疏矩阵并且支持GPU加速运算从而加快迭代速度。 ```python from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_squared_error # Assuming `data` is the preprocessed DataFrame from previous step. features = ['temp_lag1', 'temp_lag2', ..., 'wind_speed_lag8'] target = 'next_day_temperature' X_train, X_val, y_train, y_val = train_test_split( data[features], data[target], test_size=0.2, random_state=42) model = RandomForestRegressor(n_estimators=100, max_depth=None, min_samples_split=2, n_jobs=-1) model.fit(X_train, y_train) predictions = model.predict(X_val) mse = mean_squared_error(y_val, predictions) print(f'Mean Squared Error on validation set: {mse:.3f}') ``` #### 预测执行 最后当一切就绪之后就可以编写脚本文件用于定期更新最新的天气状况并向外界展示成果了。按照给定路径直接调用Python解释器加上指定入口模块即可完成整个流程自动化部署[^2]。 ```bash $ python path/to/Main.py ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值