这是我今天在http://filmaster.com"> filmaster.com上遇到的错误:
PicklingError:不能pickle:它与decimal.Decimal不是同一个对象
这究竟意味着什么?它似乎没有多大意义......它似乎与django缓存有关.你可以在这里看到整个追溯:
Traceback(最近一次调用最后一次):
文件"/home/filmaster/django-trunk/django/core/handlers/base.py",第92行,在get_response response = callback(request,*callback_args,**callback_kwargs)
在show_film
workflow.set_data_for_authenticated_user()中输入文件"/home/filmaster/film20/film20/core/film_views.py",第193行文件"/home/filmaster/film20/film20/core/film_views.py",第518行,在set_data_for_authenticated_user
object_id = self.the_film.parent.id)在get_others_ratings
set_cache 中输入文件"/home/filmaster/film20/film20/core/film_helper.py",第179行(CACHE_OTHERS_RATINGS,str(object_id)+"_"+ str(user_id),userratings)文件"/home/filmaster/film20/film20/utils/cache_helper.py",第80行,在set_cache中返回cache.set(CACHE_MIDDLEWARE_KEY_PREFIX + full_path,result,get_time(cache_string))
文件"/home/filmaster/django-trunk/django/core/cache/backends/memcached.py",第37行,设置为
self._cache.set(smart_str(key),value,timeout或self.default_timeout)文件"/usr/lib/python2.5/site-packages/cmemcache.py",第128行,在set val中,flags = self._convert(val)
文件"/usr/lib/python2.5/site-packages/cmemcache.py",第112行,在_convert val = pickle.dumps(val,2)
PicklingError:不能pickle:它与decimal.Decimal不是同一个对象
Filmaster的源代码可以从这里下载:bitbucket.org/filmaster/filmaster-test
任何帮助将不胜感激.
目前我已经使用def函数成功定义了一个自定义内核函数(预先计算内核矩阵),现在我使用GridSearchCV函数来获取最佳参数.
因此,在自定义内核函数中,总共有2个参数将被调整(即下例中的gamm和sea_gamma),而且对于SVR模型,还必须调整cost c参数.但到目前为止,我可以使用GridSearchCV 调整成本c参数 - >请参考下面的第一部分:示例.
我搜索了一些类似的解决方案,例如:
是否可以在scikit-learn中使用网格搜索调整参数来定制内核?
它说:" 实现这一目标的一种方法是使用Pipeline,SVC(kernel ='precomputed')并将自定义内核函数包装为sklearn估计器(BaseEstimator和TransformerMixin的子类).)"但这仍然与我的情况不同然而,问题是,我尝试基于此解决方案解决问题,但到目前为止它没有打印任何输出,甚至是任何错误. - >请参考第二部分:管道解决方案.
第一部分:示例 - >我在网格搜索中的原始自定义内核和评分方法是:
import numpy as np
import pandas as pd
import sklearn.svm as svm
from sklearn import preprocessing,svm, datasets
from sklearn.preprocessing import StandardScaler, MaxAbsScaler
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.grid_search import GridSearchCV
from sklearn.svm import SVR
from sklearn.pipeline import Pipeline
from sklearn.metrics.scorer import make_scorer
# weighting the vectors
def distance_scale(X,Y):
K = np.zeros((X.shape[0],Y.shape[0]))
gamma_sea =192
for i in range(X.shape[0]):
for j …Run Code Online (Sandbox Code Playgroud)