我有9个节点集群,每个节点都有以下配置,
我正在尝试使用" recommendedProductsForUsers "函数为MatrixFactorizationModel中的所有用户生成建议.看起来需要很长时间才能完成(例如:1个月的数据需要大约34个小时).是否由于在矩阵上多次迭代?
如何减少执行时间?
这些是我的spark-submit配置:
spark-submit --jars $ JAR_LOC --class com.collaborativefiltering.CustomerCollaborativeJob --driver-memory 5G --num-executors 7 --executor-cores 2 --executor-memory 20G --master yarn-client cust_rec/cust- rec.jar --period 1month --out/PATH --rank 50 --numIterations 2 --lambda 0.25 --alpha 300 --topK 20
非常感谢你提前.
recommendation-engine machine-learning apache-spark-mllib data-science
我需要有一个MAPE函数,但是我无法在标准包中找到它......下面,我实现了这个函数.
def mape(actual, predict):
tmp, n = 0.0, 0
for i in range(0, len(actual)):
if actual[i] <> 0:
tmp += math.fabs(actual[i]-predict[i])/actual[i]
n += 1
return (tmp/n)
Run Code Online (Sandbox Code Playgroud)
我不喜欢它,它在速度方面超级不理想.如何将代码重写为Pythonic方式并提高速度?
我正在使用sklearn和Keras的组合与Theano作为后端运行.我正在使用以下代码 -
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import keras
from keras.callbacks import EarlyStopping, ModelCheckpoint
from keras.constraints import maxnorm
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import SGD
from keras.wrappers.scikit_learn import KerasClassifier
from keras.constraints import maxnorm
from keras.utils.np_utils import to_categorical
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from datetime import datetime
import …Run Code Online (Sandbox Code Playgroud) 我有一个pandas数据帧如下:
user_id product_id order_number
1 1 1
1 1 2
1 1 3
1 2 1
1 2 5
2 1 1
2 1 3
2 1 4
2 1 5
3 1 1
3 1 2
3 1 6
Run Code Online (Sandbox Code Playgroud)
我想查询这个df的最长条纹(没有跳过order_number)和最后一条条纹(自上一个order_number以来).
理想的结果如下:
user_id product_id longest_streak last_streak
1 1 3 3
1 2 0 0
2 1 3 3
3 1 2 0
Run Code Online (Sandbox Code Playgroud)
我很欣赏这方面的任何见解.
例如,我正在研究这样的例子:
train['Datetime'] = pd.to_datetime(train.Datetime,format='%d-%m-%Y %H:%M')
Run Code Online (Sandbox Code Playgroud)
如果我运行train ['Datetime'].head()和train.Datetime.head(),结果是相同的.那么为什么要使用一个呢?或者为什么同时使用?
如何使用python中的Plotnine库将y轴更改为百分比,而不是分数?
小节的MWE如下:
from plotnine import *
from plotnine.data import mpg
p = ggplot(mpg) + geom_bar(aes(x='manufacturer', fill='class'), position='fill')
print(p)
Run Code Online (Sandbox Code Playgroud)
如下图所示:
在R中使用ggplot2很简单,只需添加:
+ scale_y_continuous(labels = scales::percent)
Run Code Online (Sandbox Code Playgroud)
但是,我无法在Plotnine中找到如何做到这一点。
有什么建议吗?
数据科学和机器学习项目中文件的正确命名约定是什么?
我相信Python类的文件名应该是一个名词。但是,我想明确指出是将类命名为主语还是宾语。
我应该使用哪个?
1)输出图的类。
visualization.py,visualizer.py,vis.py,或...
2)分析数据集并输出包含结果的文件的类。
analysis.py,analyzer.py或...
3)将数据集隐藏为pickle文件的类。
preprocessor.py,preprocessing.py,prepare.py,或...
(我检查了PEP8,但找不到文件名的明确命名转换)
我正在用一个36x60形状的眼睛图像训练神经网络。所以我只能使用36x60的图片预测结果吗?但是在我的应用程序中,我有一个视频流,该视频流分为多个帧,每帧预测68个地标点。在眼范围内,我可以选择视点,然后使用OpenCV中的“ boundingrect”功能,很容易获得裁剪的图像。但是此图像没有格式36x60。获取可用于预测的36x60数据的正确方法是什么?或者如何将神经网络用于其他形式的数据?
我想知道是否有可能在对满足条件的另一列的值进行计数时对一列进行分组。因为我的数据集有点奇怪,所以我创建了一个类似的数据集:
import pandas as pd
raw_data = {'name': ['John', 'Paul', 'George', 'Emily', 'Jamie'],
'nationality': ['USA', 'USA', 'France', 'France', 'UK'],
'books': [0, 15, 0, 14, 40]}
df = pd.DataFrame(raw_data, columns = ['name', 'nationality', 'books'])
Run Code Online (Sandbox Code Playgroud)
说,我想按国籍分组,并计算该国没有任何书籍(书籍== 0)的人数。
因此,我希望输出类似以下内容:
nationality
USA 1
France 1
UK 0
Run Code Online (Sandbox Code Playgroud)
我使用过滤器,agg尝试了groupby的大多数变体,但似乎什么也没用。
在此先感谢,BBQuercus :)
所以我有一个充满点的2D散点图(x,y)。我想绘制k条垂直线(x_1 = a, x_2 = b, ..., x_k = k),以便将点划分为k组。
最佳解决方案将使每个组的平均方差最小y_value。
什么是合适的算法?听起来像k均值,但我的约束是线条必须垂直。
data-science ×10
python ×6
pandas ×3
keras ×2
algorithm ×1
bar-chart ×1
dataframe ×1
k-means ×1
numpy ×1
opencv ×1
plotnine ×1
python-3.x ×1
statistics ×1