我正在编写一些代码,根据某些数据评估不同的 sklearn 模型。我正在使用类型提示,既是为了我自己的教育,也是为了帮助最终必须阅读我的代码的其他人。
我的问题是如何指定 sklearn 预测器的类型(例如LinearRegression()
)?
例如:
def model_tester(model : Predictor,
parameter: int
) -> np.ndarray:
"""An example function with type hints."""
# do stuff to model
return values
Run Code Online (Sandbox Code Playgroud)
我看到打字库可以创建新类型,或者我可以TypeVar
用来做:
Predictor = TypeVar('Predictor')
Run Code Online (Sandbox Code Playgroud)
但如果 sklearn 模型已经有传统类型,我就不想使用它。
检查 LinearRegression() 的类型产生:
sklearn.linear_model.base.LinearRegression
Run Code Online (Sandbox Code Playgroud)
这显然很有用,但前提是我对 LinearRegression 模型感兴趣。
我正在处理具有混合稀疏/密集列的数据集。由于稀疏列的数量大大超过了密集列的数量,我想看看是否可以使用Pandas 中的稀疏数据结构以有效的方式存储这些列。但是,在测试功能时,我发现具有稀疏列的数据框似乎占用更多内存,请考虑以下示例:
import numpy as np
import pandas as pd
a = np.zeros(10000000)
b = np.zeros(10000000)
a[3000:3100] = 2
b[300:310] = 1
df = pd.DataFrame({'a':pd.SparseArray(a), 'b':pd.SparseArray(b)})
print(df.info())
Run Code Online (Sandbox Code Playgroud)
这打印memory usage: 228.9 MB
. 下一个:
df = pd.DataFrame({'a':a, 'b':b})
print(df.info())
Run Code Online (Sandbox Code Playgroud)
这打印memory usage: 152.6 MB
.
非稀疏数据帧占用的空间更少吗?我误会了吗?
安装信息: