100-Days-Of-ML-Code day1-day6 notes

本文探讨了机器学习数据预处理方法,包括使用OneHotEncoder进行类别数据编码,以及StandardScaler进行特征缩放。通过多元线性回归模型,计算了预测误差的均方误差和R2分数,展示了模型的预测能力。
X = dataset.iloc[ : , :-1].values  # 取所有行的从一列到最后一列
Y = dataset.iloc[ : , 3].values  # 取所有行的第列

 

OneHotEncoder:直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制.机器学习中对于离散型的分类型的数据,需要对其进行数字化

单元线性回归用于单变量预测

 

多元线性回归类似单元线性回归模型,不过不太好画出直观二维图,只能用图展示测试值与预测值之间的误差

 

day3的多元线性回归可以最后计算下预测的误差,这里计算了均方误差和R2误差

from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
import scipy as sp

print(r2_score(Y_test,y_pred))
print(sp.sqrt(mean_squared_error(Y_test,y_pred)))

0.934706847328
9137.99015279

 

day4-day6

StandardScaler:特征缩放, (X-mean)/std , 即特征减去均值再除以标准差
<think>好的,我现在需要解决用户关于在Python中使用timedelta的days参数与day_of_year的问题。首先,我需要明确用户的具体需求。用户可能希望在处理日期时,结合年中的第几天(day_of_year)和timedelta的days参数来进行日期计算。 首先,我应该回顾timedelta的基本用法。timedelta用于表示时间间隔,通常用于日期的加减操作。它的参数包括days、seconds、microseconds等,其中days参数可以直接加减天数。例如,datetime.timedelta(days=5)表示5天的时间间隔。 接下来,用户提到day_of_year,也就是一年中的第几天。在Python中,可以使用timetuple().tm_yday来获取某个日期对象的年中的第几天。例如,datetime.date(2023, 5, 15).timetuple().tm_yday会返回135,表示这是该年的第135天。 用户的问题可能是如何将这两个功能结合起来。比如,给定一个日期,用户可能想要增加或减少若干天,然后得到新的日期的年中的第几天,或者根据年中的第几天来创建日期,并进行时间间隔的计算。 我需要考虑可能的场景。例如,用户可能有一个day_of_year的值,比如第100天,想要创建一个日期对象,然后对这个日期进行加减天数操作。或者,用户可能有一个日期,想要计算加上一定天数后的day_of_year值。 需要检查是否有常见的错误或注意事项。例如,当加减天数导致跨年时,tm_yday会自动调整到正确的年份和天数。此外,处理闰年时需要注意,tm_yday会正确返回闰年中的天数。 然后,我应该编写示例代码来演示这些操作。例如,如何从day_of_year创建日期,如何加减天数,并获取新的day_of_year。同时,需要注意日期的有效性,比如避免出现无效的日期导致ValueError。 可能还需要引用相关的文档或资料,比如pandas的to_timedelta函数,但用户的问题主要集中在标准库的datetime模块。不过,如果用户使用pandas处理时间序列,可能需要结合使用timedelta和pandas的功能,比如pd.to_timedelta。 另外,用户提供的引用中有关于pandas的to_timedelta函数的帮助信息,以及处理日期超出范围的错误。这可能提示用户在处理日期时需要注意边界情况,比如加减天数后的日期是否有效,避免出现ValueError: day out of range的情况。 总结步骤: 1. 使用datetime模块创建日期对象。 2. 获取日期的day_of_year属性。 3. 使用timedelta加减天数。 4. 处理跨年和闰年的情况。 5. 演示如何从day_of_year构造日期。 6. 注意事项和错误处理。 现在需要将这些步骤转化为代码示例,并解释每个部分的作用,确保用户能够理解并正确应用这些方法。同时,需要提醒用户注意日期有效性,避免常见错误。</think>### 解答 在Python中结合`timedelta`的`days`参数与`day_of_year`(年中的第几天)时,需通过`datetime`模块进行日期计算。以下是具体方法及示例: --- ### 1. **基础操作:加减天数并获取`day_of_year`** ```python from datetime import datetime, timedelta # 当前日期 current_date = datetime(2023, 5, 15) print("当前日期:", current_date.date()) # 2023-05-15 # 获取当前日期的day_of_year day_of_year = current_date.timetuple().tm_yday print("当前日期的年中天数:", day_of_year) # 135 # 使用timedelta增加10天 new_date = current_date + timedelta(days=10) print("加10天后的日期:", new_date.date()) # 2023-05-25 # 计算新日期的day_of_year new_day_of_year = new_date.timetuple().tm_yday print("新日期的年中天数:", new_day_of_year) # 145 ``` --- ### 2. **从`day_of_year`反推日期并操作** 若已知年中的第几天(如第100天),可构造日期对象后使用`timedelta`: ```python year = 2023 day_of_year = 100 # 从day_of_year创建日期(注意闰年) date_from_doy = datetime(year, 1, 1) + timedelta(days=day_of_year - 1) print(f"{year}年第{day_of_year}天是:", date_from_doy.date()) # 2023-04-10 # 加减天数操作 modified_date = date_from_doy + timedelta(days=-30) print("减30天后的日期:", modified_date.date()) # 2023-03-11 print("新日期的年中天数:", modified_date.timetuple().tm_yday) # 70 ``` --- ### 3. **注意事项** - **跨年处理**:若加减天数导致跨年,`tm_yday`会自动重置为新年中的天数: ```python date = datetime(2023, 12, 31) + timedelta(days=1) print(date.date()) # 2024-01-01 print(date.timetuple().tm_yday) # 1(属于2024年) ``` - **闰年判断**:`tm_yday`会正确处理闰年(如2024年2月29日对应第60天)[^1]。 - **错误处理**:操作后若日期无效(如2023-02-30),会抛出`ValueError`[^3]。 --- ### 4. **结合Pandas处理时间序列** 若使用`pandas`库,可借助`pd.to_timedelta`简化操作: ```python import pandas as pd # 从day_of_year构造日期序列 date_series = pd.to_datetime("2023-01-01") + pd.to_timedelta([99, 100, 101], unit="D") print(date_series) # 输出:DatetimeIndex(['2023-04-10', '2023-04-11', '2023-04-12'], dtype='datetime64[ns]', freq=None) ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值