Fused Lasso (Tibshirani 等人,2005)鼓励系数的稀疏性及其差异的稀疏性。
这是损失函数和正则化的公式:
第一项是 L2 (mse) 损失,第二项是对系数的 L1 惩罚(Lasso 正则化),最后一项是链接文章中引入的新项。
我如何用cvxpy包来模仿这个 - 具体来说,我如何实现最后一项?
分别有Lasso和Ridge Penalties 的示例代码。我大致了解这些代码是如何工作的,但有一些功能我不知道我应该如何决定使用哪一个。例如,让我们比较 Lasso 和 Ridge 惩罚代码。
# Lasso
import cvxpy as cp
import numpy as np
import matplotlib.pyplot as plt
def loss_fn(X, Y, beta):
return cp.norm2(cp.matmul(X, beta) - Y)**2
def regularizer(beta):
return cp.norm1(beta)
def objective_fn(X, Y, beta, lambd):
return loss_fn(X, Y, beta) + lambd * regularizer(beta)
def mse(X, Y, beta):
return (1.0 / X.shape[0]) * loss_fn(X, Y, beta).value …Run Code Online (Sandbox Code Playgroud) [在]:
from sklearn_extra.cluster import KMedoids
Run Code Online (Sandbox Code Playgroud)
[出去]:
ModuleNotFoundError: No module named 'sklearn_extra'
Run Code Online (Sandbox Code Playgroud)
然后,我尝试通过安装 sklearn_extra
[在]:
ModuleNotFoundError: No module named 'sklearn_extra'
Run Code Online (Sandbox Code Playgroud)
[出去]:
python -m pip install sklearn_extra
Run Code Online (Sandbox Code Playgroud)
然后,我去了网站的安装部分(https://scikit-learn-extra.readthedocs.io/en/latest/install.html)并按照它说的做了:
Installation
Dependencies
scikit-learn-extra requires,
Python (>=3.5)
scikit-learn (>=0.21), and its dependencies
Cython (>0.28)
User installation
Latest development version can be installed with,
pip install https://github.com/scikit-learn-contrib/scikit-learn-extra/archive/master.zip
Run Code Online (Sandbox Code Playgroud)
[在]:
ERROR: Could not find a version that satisfies the requirement sklearn_extra (from versions: none)
ERROR: No matching distribution found for sklearn_extra
Run Code Online (Sandbox Code Playgroud)
[出去]:
ERROR: Command errored out …Run Code Online (Sandbox Code Playgroud) 当我尝试运行 CatBoost 算法时出现此错误。它是参数之一,所以我不明白为什么当我注释掉 Early_stopping_rounds 时会发生此错误,我对 cat_features 参数遇到相同的错误
from catboost import CatBoostClassifier
categorical_indexes = np.where(X.dtypes == 'object')[0]
X.drop(["id"], axis = 1, inplace = True)
params = {'loss_function':'Logloss',
'eval_metric':'AUC',
'verbose': 200,
"early_stopping_rounds": 200,
"cat_features": categorical_indexes,
'random_seed': 17}
cat = CatBoostClassifier(**params)
cat.fit(X,y)
Run Code Online (Sandbox Code Playgroud)
编辑:
通过 pip 升级 catboost 包现在我收到另一个错误
但是,在我的代码中,我正在过滤分类值,然后将它们分配给 cat_features 参数
TypeError Traceback (most recent call last)
_catboost.pyx in _catboost.get_float_feature()
_catboost.pyx in _catboost._FloatOrNan()
_catboost.pyx in _catboost._FloatOrNanFromString()
TypeError: Cannot convert 'b'Triangle'' to float
During handling of the above exception, another exception occurred:
CatBoostError Traceback …Run Code Online (Sandbox Code Playgroud) 我怎样才能得到实际的精确结果而不是四舍五入的结果?
result = ((0.61)**(10435)*(0.39)**(6565))/((0.63)**(5023)*(0.60)**(5412)*(0.37)**(2977)*(0.40)**(3588))
Run Code Online (Sandbox Code Playgroud)
出去:
NaN
Run Code Online (Sandbox Code Playgroud)
因为,分母是0