小编Ber*_*ard的帖子

Python - 基本与扩展切片

在尝试切片时,我注意到Python 2.7中有一个奇怪的行为:

class A:
    def __getitem__(self, i):
        print repr(i)
a=A()
a[:] #Prints slice(0, 9223372036854775807, None)
a[::] #prints slice(None, None, None)
a[:,:] #prints (slice(None, None, None), slice(None, None, None))
Run Code Online (Sandbox Code Playgroud)

在括号中使用单个冒号时,切片对象的开头为0,结尾为大整数.但是,当我使用多个冒号时,如果未指定,则start和stop为None.

这种行为是保证还是实现特定的?

文档说,第二和第三壳体延伸切片,而第一种情况下则不是.但是,我找不到基本切片和扩展切片之间差异的任何明确解释.

当我覆盖__getitem__并希望接受扩展切片时,是否还有其他"特殊情况" ?

python python-2.7

9
推荐指数
1
解决办法
375
查看次数

我可以在scikit-learn中安全地分配`coef_`和其他估计参数吗?

scikit-learn 建议使用pickle进行模型持久化。但是,他们注意到在使用不同版本的scikit-learn或python时,pickle的局限性。(另请参见此stackoverflow问题

在许多机器学习方法中,仅从大数据集中学习很少的参数。这些估计的参数存储在带有下划线的属性中,例如coef_

现在我的问题是:是否 可以通过持久保存估计的属性并在以后分配它们来实现模型持久性? 对于scikit-learn中的所有估计器,此方法是否安全?对于某些估计器,是否存在潜在的副作用(例如,必须设置私有变量)?

如以下示例所示,它似乎适用于逻辑回归:

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
try:
    from sklearn.model_selection import train_test_split
except ImportError:
    from sklearn.cross_validation import train_test_split
iris = datasets.load_iris()
tt_split = train_test_split(iris.data, iris.target, test_size=0.4)
X_train, X_test, y_train, y_test = tt_split

# Here we train the logistic regression
lr = LogisticRegression(class_weight='balanced')
lr.fit(X_train, y_train)
print(lr.score(X_test, y_test))     # prints 0.95

# Persisting
params = lr.get_params()
coef = lr.coef_
intercept = lr.intercept_
# classes_ is not …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

4
推荐指数
1
解决办法
431
查看次数

标签 统计

python ×2

python-2.7 ×1

scikit-learn ×1