小编Vin*_*lar的帖子

pyspark的“介于”功能:不包括时间戳的范围搜索

pyspark的“介于”功能不包含在时间戳输入中。

例如,如果我们想要两个日期之间的所有行,例如“ 2017-04-13”和“ 2017-04-14”,那么当日期作为字符串传递时,它将执行“排他”搜索。即,它省略了“ 2017-04-14 00:00:00”字段

但是,该文档似乎暗示它具有包容性(尽管在时间戳上没有引用)

当然,一种方法是从上限添加一个微秒,并将其传递给函数。但是,不是一个很好的解决方案。进行包含式搜索的任何干净方法?

例:

import pandas as pd
from pyspark.sql import functions as F
... sql_context creation ...
test_pd=pd.DataFrame([{"start":'2017-04-13 12:00:00', "value":1.0},{"start":'2017-04-14 00:00:00', "value":1.1}])
test_df = sql_context.createDataFrame(test_pd).withColumn("start", F.col("start").cast('timestamp'))
test_df.show()

+--------------------+-----+
|               start|value|
+--------------------+-----+
|2017-04-13 12:00:...|  1.0|
|2017-04-14 00:00:...|  1.1|
+--------------------+-----+

test_df.filter(F.col("start").between('2017-04-13','2017-04-14')).show()

+--------------------+-----+
|               start|value|
+--------------------+-----+
|2017-04-13 12:00:...|  1.0|
+--------------------+-----+
Run Code Online (Sandbox Code Playgroud)

python datetime range between pyspark

6
推荐指数
2
解决办法
1万
查看次数

sklearn RandomForest模型上32- / 64位序列化异常的解决方法

如果我们在64位计算机上使用joblib序列化randomforest模型,然后在32位计算机上解压缩,则会出现异常:

ValueError: Buffer dtype mismatch, expected 'SIZE_t' but got 'long long'
Run Code Online (Sandbox Code Playgroud)

之前曾有人问过这个问题:Scikits-Learn RandomForrest在64位python上受过训练,不会在32位python上打开。但是自2014年以来,这个问题一直没有得到回答。

学习模型的示例代码(在64位计算机上):

modelPath="../"
featureVec=...
labelVec = ...
forest = RandomForestClassifier()
randomSearch = RandomizedSearchCV(forest, param_distributions=param_dict, cv=10, scoring='accuracy',
                                      n_iter=100, refit=True)
randomSearch.fit(X=featureVec, y=labelVec)
model = randomSearch.best_estimator_
joblib.dump(model, modelPath)
Run Code Online (Sandbox Code Playgroud)

在32位计算机上解压缩的示例代码:

modelPath="../"
model = joblib.load(modelPkl) # ValueError thrown here
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果我们必须在64位计算机上学习并将其移植到32位计算机上进行预测,那么是否有针对该问题的通用解决方法?

编辑:尝试直接使用pickle而不是joblib。仍然存在相同的错误。错误发生在核心pickle库中(对于joblib和pickle):

  File "/usr/lib/python2.7/pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "/usr/lib/python2.7/pickle.py", line 858, in load
    dispatch[key](self)
  File "/usr/lib/python2.7/pickle.py", line 1133, in load_reduce
    value = func(*args)
  File "sklearn/tree/_tree.pyx", line 585, in sklearn.tree._tree.Tree.__cinit__ …
Run Code Online (Sandbox Code Playgroud)

python pickle random-forest scikit-learn joblib

5
推荐指数
1
解决办法
948
查看次数