小编Val*_*rch的帖子

Apache Spark Python Cosine与DataFrames的相似性

对于推荐系统,我需要计算整个Spark DataFrame的所有列之间的余弦相似度.

在熊猫我曾经这样做过:

import sklearn.metrics as metrics
import pandas as pd

df= pd.DataFrame(...some dataframe over here :D ...)
metrics.pairwise.cosine_similarity(df.T,df.T)
Run Code Online (Sandbox Code Playgroud)

这会在列之间生成相似矩阵(因为我使用了转置)

有没有办法在Spark(Python)中做同样的事情?

(我需要将它应用于由数千万行和数千列组成的矩阵,这就是我需要在Spark中执行此操作的原因)

python cosine-similarity apache-spark apache-spark-sql pyspark

11
推荐指数
1
解决办法
5702
查看次数

Apache Spark ALS - 如何执行实时建议/折叠匿名用户

我正在使用Apache Spark(Pyspark API for Python)ALS MLLIB开发一项服务,为我的站点中的匿名用户(不在训练集中的用户)执行实时推荐.在我的用例中,我以这种方式在用户评级上训练模型:

from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
ratings = df.map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2])))
rank = 10 
numIterations = 10
model = ALS.trainImplicit(ratings, rank, numIterations)
Run Code Online (Sandbox Code Playgroud)

现在,每次匿名用户选择目录中的项目时,我想在ALS模型中折叠其向量并获得建议(就像recommendedProducts()调用一样),但避免重新训练整个模型.

在Apache Spark中训练ALS模型后,有没有办法轻松完成新匿名用户向量的折叠

提前致谢

python collaborative-filtering apache-spark pyspark apache-spark-mllib

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

Pandas read_csv dtype inference on file with many int columns,除了索引和列是字符串

我需要为我正在构建的推荐程序加载一个大的 .csv 文件(大约有 1000 万条记录)。我的输入文件如下所示(k 接近 ~400 列):

      P1    P2    ... Pk

a      1     1    ...  0
b      0     0    ...  0
c      0     0    ...  1
Run Code Online (Sandbox Code Playgroud)

我尝试通过此调用读取我的文件:

pd.read_csv(url,header=0, sep="\t",index_col=0,encoding="utf-8")
Run Code Online (Sandbox Code Playgroud)

当我阅读文件时,Pandas错误地猜测我的数据中的所有数字都是 floats。我想强制数据为“int”类型,以便在加载过程中节省内存。我尝试使用选项:dtype=int,但这发出了一个错误:

ValueError: invalid literal for int() with base 10: 'a'
Run Code Online (Sandbox Code Playgroud)

我想这是因为我的索引和列是字符串。

我知道我可以尝试使用字典来手动指定列的数据类型,但是由于我正在构建一个推荐程序,因此我事先不知道我的文件的列和索引,我想避免重新 -每次加载新文件时创建字典。

如何指定read_csv方法只在我的表的数据上设置整数类型,而不是索引和列名?

python csv types type-inference pandas

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