如何将datetime.timedelta类型转换为整数?
如何将datetime.timedelta类型转换为整数并提取数值?
你在使用sklearn随机森林完成预测和准确率测试后,得到了datetime.timedelta类型的运行时长rf_time(示例值为0:00:00.011969),可以通过以下几种方式将其转换为整数,提取不同精度的时长数值:
1. 提取总微秒数(对应示例中的11969)
这是最精确的方式,会把整个时长转换为微秒级的整数:
total_micro = int(rf_time.total_seconds() * 1000000) print(total_micro) # 输出:11969
2. 提取总毫秒数(整数部分)
如果只需要毫秒级精度:
total_milli = int(rf_time.total_seconds() * 1000) print(total_milli) # 输出:11
3. 提取总秒数(整数部分)
当只需要秒级的整数时长时:
total_sec = int(rf_time.total_seconds()) print(total_sec) # 输出:0
注意:区分microseconds属性和总微秒数
rf_time.microseconds只能获取秒以下的微秒片段(范围0-999999),如果你的时长包含分钟、小时等更大单位,这个值不等于总时长的微秒数。比如若rf_time为0:01:02.000003,rf_time.microseconds返回3,而总微秒数是62000003,此时必须用total_seconds() * 1000000来获取完整数值。
结合你的原有代码,修改后的示例如下:
import datetime from sklearn.metrics import accuracy_score # 原有计时逻辑 a = datetime.datetime.now() y_pred = clf.predict(X_test) b = datetime.datetime.now() rf_time = b - a # 转换为整数时长 total_micro = int(rf_time.total_seconds() * 1000000) # 输出结果 print(type(rf_time)) print('Random Forest Time Duration - ', rf_time) print('Random Forest Time (微秒) - ', total_micro) print("Random Forest Accuracy:", accuracy_score(y_test, y_pred))
内容的提问来源于stack exchange,提问作者Auvee
相关产品推荐
相关产品推荐

