PySpark中是否有一个相当于scikit-learn的sample_weight的参数?
我目前正在使用scikit-learn库提供的SGDClassifier.当我使用fit方法时,我可以设置sample_weight参数: 施加在各个样本上的权重.如果不提供,统一 假定权重.这些权重将乘以 class_weight(通过构造函数通过class_weight是 指定 我想切换到pyspark并使用LogisticRegression类.无论如何,我找不到类似于sample_weight的参数.有一个weightCol参数,但我认为它可以做一些不同的事情. 您有什么建议吗? 解决方案 有一个weightCol参数,但我认为它有所不同. 相反,Spark ML的weightCol确实做到了;源自 weightCol = param(parent ='undefined',name ='stogeCol',doc ='reight column name.如果不是设置或空的,我们将全部待遇权重为1.0.')
0 2024-03-01
编程技术问答社区
如何在Spark内用Sklearn模型做预测?
我已经使用Sklearn培训了Python的模型.我们如何使用相同的模型在火花中加载并在Spark RDD上产生预测? 解决方案 好吧, 我将显示Sklearn中线性回归的示例,并向您展示如何使用它来预测Spark RDD中的元素. 首先用Sklearn训练模型示例: # Create linear regression object regr = linear_model.LinearRegression() # Train the model using the training sets regr.fit(diabetes_X_train, diabetes_y_train) 在这里,我们只有适合,您需要从RDD预测每个数据. 在这种情况下,您的rdd应该是x的RDD: rdd = sc.parallelize([1, 2, 3, 4]) 因此,您首先需要广播Sklearn的模型: regr_bc = self.sc.broad
0 2024-03-01
编程技术问答社区
Spark.ml的回归结果与scikit-learn计算的模型不一样
我正在Scikit-learn和spark.ml中设置一个非常简单的逻辑回归问题,结果差异:他们所学的模型与众不同,但是我不知道为什么(数据是相同的,模型,类型是相同的,正则化是相同的...). 毫无疑问,我缺少一侧或另一侧的设置.哪个设置?我应该如何设置scikit或spark.ml以找到与同一模型相同的模型? 我在下面提供Sklearn代码和Spark.ml代码.两者都应该准备剪切和运行. Scikit-Learn代码: import numpy as np from sklearn.linear_model import LogisticRegression, Ridge X = np.array([ [-0.7306653538519616, 0.0], [0.6750417712898752, -0.4232874171873786], [0.1863463229359709, -0.8163423997075965],
0 2024-03-01
编程技术问答社区
对有重复的类进行多标签编码
如何用重复项编码列表列? 类似Sklearn的MultiLabelBinarizer,它计算重复类的实例数而不是二进制. 示例输入: x = pd.Series([['a', 'b', 'a'], ['b', 'c'], ['c','c']]) 预期输出: a b c 0 2 1 0 1 0 1 1 2 0 0 2 解决方案 我已经写了一个新的班级 MultiLabelCounter 基于 Multilabelbinarizer 代码. import itertools import numpy as np class MultiLabelCounter(): def __init__(self, classes=None): self.classes_ = classes def fit(self,y): self.classes_ = sor
0 2024-03-01
编程技术问答社区
系统之间的随机种子是否兼容?
我使用Python的Sklearn软件包制作了一个随机的森林模型,例如,我将种子设置为1234.为了制作模型,我们使用Pyspark.如果我要通过相同的超级固定器和相同的种子价值,即1234,它会得到相同的结果吗? 基本上,随机种子数在不同系统之间起作用吗? 解决方案 好吧,这正是某些实验和代码段所能真正可以做的问题... 无论如何,似乎一般的答案是一个公司 no :不仅在Python和Spark Mllib之间,甚至在Spark Sub-sodules之间,或者在Python&Numpy之间... 这是一些可重复的代码,在 databricks dataBricks community commound cloud 中C2>已经被导入,相关上下文初始化): import sys import random import pandas as pd import numpy as np from pyspark.sql.functions import r
0 2024-03-01
编程技术问答社区
将PySpark和DBSCAN与pandas_udf相结合
我正在阅读pandas_udf上的文档: 我很好奇如何在其中添加Sklearn dbscan,例如我有一个数据集: data = [(1, 11.6133, 48.1075), (1, 11.6142, 48.1066), (1, 11.6108, 48.1061), (1, 11.6207, 48.1192), (1, 11.6221, 48.1223), (1, 11.5969, 48.1276), (2, 11.5995, 48.1258), (2, 11.6127, 48.1066), (2, 11.6430, 48.1275), (2, 11.6368, 48.1278), (2, 11.5930, 48.1156)] df = spark.createDataFrame(data, ["id
0 2024-03-01
编程技术问答社区
在spark中分发scikit learn分类器的推荐方式是什么?
我已经使用Scikit Learn构建了一个分类器,现在我想使用SPARK在大型数据集上运行Preditive_proba.我目前使用以下分类器腌制: import pickle pickle.dump(clf, open('classifier.pickle', 'wb')) ,然后在我的火花代码中,我使用SC.Broadcast广播此泡菜,以便在我的Spark Code中使用,该腌制必须在每个群集节点上加载. 这有效,但泡菜很大(约0.5gb),似乎非常效率. 有更好的方法吗? 解决方案 这有效,但泡菜很大(约0.5gb) 请注意,森林的大小将是O(M*N*Log(N)),其中m是树的数量,n是样本的数量. 有更好的方法吗? 有几个选项您可以尝试减少您的RandomForestClassifier模型的大小或序列化文件: 通过 将泡菜拉链,例如如下.请注意,有几个选项,一个可能更适合您,因此您需要尝试: with gzip
0 2024-02-29
编程技术问答社区
如何对KMeans的json数据进行矢量处理?
我有许多用户要回答的问题和选择.他们具有这样的格式: question_id, text, choices 对于每个用户,我存储了回答的问题,并被每个用户选择为MongoDB中的JSON: {user_id: "", "question_answers" : [{"question_id": "choice_id", ..}] } 现在,我正在尝试使用K-Means聚类和流媒体来根据他们的问题选择来查找大多数类似用户,但是我需要将用户数据转换为某些向量编号,例如Spark的Docs kmeans数据样本和我所需的输出: 0.0 0.0 0.0 0.1 0.1 0.1 0.2 0.2 0.2 9.0 9.0 9.0 9.1 9.1 9.1 9.2 9.2 9.2 我已经尝试使用Scikit-Learn的Dictvectorizer,但似乎不正常. 我为这样的每个Question_Choice组合创建了一个密钥: from sklearn.feat
0 2024-02-29
编程技术问答社区
Apache Spark和scikit_learn之间KMeans的结果不一致
我正在使用PySpark在数据集上进行聚类.为了找到群集的数量,我执行了在一个值范围(2,20)上进行聚类,并找到了每个值的wsse(正方形内总和)值的k.在这里,我发现了一些不寻常的东西.根据我的理解,当您增加簇数时,wsse单调减少.但是结果我说其他情况.我在前几个群集中显示wsse Results from spark For k = 002 WSSE is 255318.793358 For k = 003 WSSE is 209788.479560 For k = 004 WSSE is 208498.351074 For k = 005 WSSE is 142573.272672 For k = 006 WSSE is 154419.027612 For k = 007 WSSE is 115092.404604 For k = 008 WSSE is 104753.205635 For k = 009 WSSE is 98000.985547 For k = 010
0 2024-02-29
编程技术问答社区
任务在Spark集群中是如何分配的?
因此,我有一个输入,该输入包括数据集和使用Scikit-Learn的几种ML算法(带有参数调整).我已经尝试了很多尝试如何尽可能高效地执行此操作,但是此刻,我仍然没有适当的基础架构来评估我的结果.但是,我对此领域缺乏背景,我需要帮助才能清除一切. 基本上,我想以尽可能多地利用所有可用资源的方式来分配任务,以及实际上隐含地完成的工作(例如,spark). 这是我的情况: 我需要训练许多不同的决策树模型(与所有可能参数的组合一样多),许多不同的随机森林模型等等... 在我的一种方法中,我有一个列表,其每个元素对应于一种ML算法及其参数列表. spark.parallelize(algorithms).map(lambda algorihtm: run_experiment(dataframe, algorithm)) 在此函数中run_experiment i为具有参数网格的相应ML算法创建GridSearchCV.我还设置了n_jobs=-1以(尝试)达到最大
将scikit-learn与pyspark整合在一起
我正在探索Pyspark以及将Scikit-Learn与Pyspark集成的可能性.我想使用Scikit-Learn在每个分区上训练模型.这意味着,当定义我的RDD并分布在不同的工人节点之间时,我想在每个工人节点上存在的每个分区上使用Scikit-Learn并训练模型(假设一个简单的K-均值).由于Scikit-Learn算法采用Pandas DataFrame,我最初的想法是为每个分区致电toPandas,然后训练我的模型.但是,toPandas函数将数据框架收集到驱动程序中,这不是我想要的.还有其他实现此类目标的方法吗? 解决方案 Scikit-learn无法与Spark完全集成在一起,原因是Scikit-Learn算法并未实现以在单台计算机上工作时分布. 尽管如此,您仍可以在 spark-sklearn "> spark-sklearn 支持(时刻)在Spark上执行GridSearch以进行交叉验证. 编辑 从2020年起, spark-sklearn
0 2024-02-29
编程技术问答社区
如何在结构化查询中使用scikit-learn模型?
我正在尝试将使用泡菜检索到的Scikit模型应用于结构化流数据框架的每一行. 我已经尝试使用pandas_udf(版本代码1),这给了我这个错误: AttributeError: 'numpy.ndarray' object has no attribute 'isnull' 代码: inputPath = "/FileStore/df_training/streaming_df_1_nh_nd/" from pyspark.sql import functions as f from pyspark.sql.types import * data_schema = data_spark_ts.schema import pandas as pd from pyspark.sql.functions import col, pandas_udf, PandasUDFType # User Defines Functions for Pandas Dataf
0 2024-02-29
编程技术问答社区
PySpark vs sklearn TFIDF
我是Pyspark的新手.我正在和TFIDF一起玩.只是想检查他们是否给出相同的结果.但是它们不一样.这是我所做的. # create the PySpark dataframe sentenceData = sqlContext.createDataFrame(( (0.0, "Hi I heard about Spark"), (0.0, "I wish Java could use case classes"), (1.0, "Logistic regression models are neat") )).toDF("label", "sentence") # tokenize tokenizer = Tokenizer().setInputCol("sentence").setOutputCol("words") wordsData = tokenizer.transform(sentenceData) # vectorize vectorizer = C
0 2024-02-29
编程技术问答社区
如何解决运行 sklearn2PMML 时的内存不足问题
我正在尝试打包我在python编写的SVM分类器模型作为PMML,以在Flink Project中使用它. 参考: 该模型工作正常,返回的预期结果,如下所示(不确定重复输出,但这不是这里的问题). 当我尝试将其包装为PMML文件时,我会得到"请求的数组大小超过VM限制"错误. 谁能告诉我这里发生了什么? P.S.我想知道它是否与未设置的活动字段有关.训练数据是一个单热编码的矢量表示. 解决方案 sklearn2pmml.sklearn2pmml实用程序函数正在通过Python的subprocess.Popen调用Java可执行文件.如果默认的Java启动配置的内存也"小",则可以通过指定-Xms和/或-Xmx Java可执行选项来增加其大小. 做到这一点的两种方法: 导出所需的配置JAVA_OPTS环境变量. 从sklearn2pmml 0.86.2开始,sklearn2pmml.sklearn2pmml实用程序函数支持java_hom
0 2024-02-28
编程技术问答社区
scikit learn:如何检查系数的显著性
我尝试使用Sklearn进行LR,以获取一个相当大的数据集,该数据集具有约600个虚拟的大型数据集,而间隔变量只有少量(我的数据集中的300 K线),并且由此产生的混淆矩阵看起来可疑.我想检查返回系数和方差分析的重要性,但找不到如何访问它.有可能吗?对于包含许多虚拟变量的数据的最佳策略是什么?多谢! 解决方案 Scikit-Learn故意不支持统计推断.如果您需要开箱即用的系数显着性测试(以及更多),则可以使用 logit statsmodels 的估计器.此软件包模仿R中的glm型号,因此您可以熟悉它. 如果您仍然想坚持使用Scikit-learn Logisticression,则可以使用差异近似来分配最大likelihiood估计值.确切地说,对于最大似然估计的向量theta,其方差 - 交互矩阵可以估计为inverse(H),其中H是theta theta的log-okelihoody的Hessian矩阵.这正是以下功能所做的: import numpy as
0 2024-02-26
编程技术问答社区
使用机器学习的周期性数据(如度数角->179与-179有2个不同)。
我正在使用Python进行内核密度估计和高斯混合模型来对多维数据样品的可能性进行排名. 每个数据都是一个角度,我不确定如何处理机器学习的角度数据的周期性. 首先,我通过向它们添加360的360来删除所有负角度,因此所有负面的角度变为正,-179成为181.我相信这可以优雅地处理-179的情况,类似的情况与179的相似之处没有显着差异,但是它不能处理像359一样与1不同的实例. 我想到解决这个问题的一种方法是保持负和负360值并使用两个值,但这需要修改机器学习算法. 是否有良好的预处理解决方案? Scipy或Scikit内置的东西? 谢谢! 解决方案 正如Tal Darom在评论中所写的那样,您可以用两个功能cos(x)和sin(x)替换每个定期功能x> sin(x).解决了359≈1问题: >>> def fromdeg(d): ... r = d * np.pi / 180. ... return np.array([np.cos(
0 2024-02-20
编程技术问答社区
在Android中使用经过训练的Scikit-learn svm分类器
我正在开发一个使用手机传感器数据来对活动进行分类的Android应用程序.我也真的更喜欢Scikit-Learn,而不是任何Java机器学习库.因此,我使用Django和Scikit创建了一个非常最小的REST API,并使用支持向量机和返回模型信息来训练传感器数据. 我的问题是:如何使用Scikit-Learn在手机上产生的模型进行预测?到目前为止,我已经考虑过扩展API,以便每当电话要进行预测时,都会将数据发送到API以获取一个.但是,我宁愿能够编写一些Java代码或使用Java库进行预测.向API发送培训数据并不是问题,因为这不是实时完成的 - 仅当已经收集数据时才完成.但是,为实时预测发送数据似乎是不可行的. 使用逻辑回归执行此操作要容易得多,因为预测公式和模型参数非常简单.我可以放弃SVM并改用它,但我也想提供SVM. 有人知道有人以前这样做吗?是否有一个相对偏离的时间限制时间 - 毫无疑问 - 在数字计算或摩托车学习的方式上可以做到这一点?不需要详细的步骤,
0 2024-02-05
编程技术问答社区
在安卓设备中使用sklearn
我目前正在使用Sklearn为我从Android设备收集的传感器数据进行机器学习. 但是,在训练模型后,我需要做预测.由于将在很短的时间内生成很多传感器数据,因此在服务器或其他机器中进行预测是我的最后选择. 那么,我可以在Android中做Sklearn的方法吗?我能想到三种解决方案: 是否可以在Android中运行Sklearn,然后让Sklearn脚本进行预测? 如果不是1,我是否有可能在Java(Android)中使用一些中间库来拾取我在Python中训练的模型? 如果不是1和2,我是否有可能使用Android平台中支持的其他机器学习库? 解决方案 我从事一个名为 sklearn-porter 的项目 sklearn-porter 哪些端口训练了模型C,Java和JavaScript等低级编程语言.在给定时间将添加更多分类器和回归器.
8 2024-02-03
编程技术问答社区
在python中精确复制R文本预处理
我想以python的方式预处理文档语料库,例如我在R中可以使用的方式,给定初始语料库,corpus,我想最终得到一个对应于该语料库的语料库使用以下R代码生产的一个: library(tm) library(SnowballC) corpus = tm_map(corpus, tolower) corpus = tm_map(corpus, removePunctuation) corpus = tm_map(corpus, removeWords, c("myword", stopwords("english"))) corpus = tm_map(corpus, stemDocument) 在Python中有一种简单或直接的(最好是预先建造)的方法?有没有办法确保完全相同的结果? 例如,我想预处理 @Apple耳舱很棒!我我的耳机上最好的声音 曾经有! 进入 耳朵舱Amaz Amp Best Sound Sount Heatear Ive有史以来
6 2024-01-26
编程技术问答社区
带有管道和GridSearchCV的StandardScaler
我将标准标准器放在管道上,并且 cv_mlpregressor.predict(x_test)的结果很奇怪.我认为我必须从标准标准中带回值,但仍然无法弄清楚. pipe_MLPRegressor = Pipeline([('scaler', StandardScaler()), ('MLPRegressor', MLPRegressor(random_state = 42))]) grid_params_MLPRegressor = [{ 'MLPRegressor__solver': ['lbfgs'], 'MLPRegressor__max_iter': [100,200,300,500], 'MLPRegressor__activation' : ['relu','logistic','tanh'], 'MLPRegressor__hidden_layer_sizes':[(2,), (4,),(2,2),(4,4
8 2024-01-26
编程技术问答社区