小编Ser*_*nov的帖子

使用SBT构建Scala/Spark项目时出现警告

我正在尝试使用以下内容在IntelliJ Idea中构建Scala/Spark项目build.sbt:

name := "try"

version := "1.0"

scalaVersion := "2.11.8"

val sparkVersion = "2.2.0"

resolvers ++= Seq(
  "apache-snapshots" at "http://repository.apache.org/snapshots/"
)

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion,
  "org.apache.spark" %% "spark-sql" % sparkVersion,
  "org.apache.spark" %% "spark-mllib" % sparkVersion,
  "org.apache.spark" %% "spark-streaming" % sparkVersion,
  "org.apache.spark" %% "spark-hive" % sparkVersion
)
Run Code Online (Sandbox Code Playgroud)

并得到一堆警告:

8/6/17
1:29 PM SBT project import
                [warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
                [warn]  * io.netty:netty:3.9.9.Final is selected over …
Run Code Online (Sandbox Code Playgroud)

scala intellij-idea sbt apache-spark

31
推荐指数
1
解决办法
4292
查看次数

如何在使用带有 IntervalIndex 的 pandas.cut 后重命名类别?

我使用pandas.cutIntervalIndex.from_tuples.

剪切按预期工作,但是类别显示为我在IntervalIndex. 有没有办法将类别重命名为不同的标签,例如(小、中、大)?

例子:

bins = pd.IntervalIndex.from_tuples([(0, 1), (2, 3), (4, 5)])
pd.cut([0, 0.5, 1.5, 2.5, 4.5], bins)
Run Code Online (Sandbox Code Playgroud)

结果类别将是:

[NaN, (0, 1], NaN, (2, 3], (4, 5]]
Categories (3, interval[int64]): [(0, 1] < (2, 3] < (4, 5]]
Run Code Online (Sandbox Code Playgroud)

我正在尝试更改[(0, 1] < (2, 3] < (4, 5]]为类似1, 2 ,3or 的东西small, medium ,large

遗憾的是,在使用 IntervalIndex 时,pd.cut 的标签参数参数会被忽略。

谢谢!

更新:

感谢@SergeyBushmanov,我注意到这个问题仅在尝试更改数据框内的类别标签时才存在(这就是我想要做的)。更新示例:

In [1]: df = pd.DataFrame([0, 0.5, 1.5, 2.5, 4.5], columns …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

掩蔽者在 SHAP 包中真正做了什么并让他们适合训练或测试?

我一直在尝试使用这个shap包。我想从我的逻辑回归模型中确定形状值。与 相反TreeExplainerLinearExplainer需要所谓的掩蔽器。这个掩码器到底有什么作用,独立掩码器和分区掩码器有什么区别?

另外,我对测试集中的重要功能很感兴趣。然后我是否将掩蔽器安装在训练集或测试集上?下面您可以看到一段代码。

model = LogisticRegression(random_state = 1)
model.fit(X_train, y_train)

masker = shap.maskers.Independent(data = X_train)
**or**
masker = shap.maskers.Independent(data = X_test)

explainer = shap.LinearExplainer(model, masker = masker)
shap_val = explainer(X_test)```

Run Code Online (Sandbox Code Playgroud)

python machine-learning logistic-regression shap

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

SHAP 函数在绘图方法中引发异常

Samples.zip 示例压缩文件夹包含:

  1. 模型.pkl
  2. x_test.csv

要重现问题,请执行以下步骤:

  1. 用于lin2 =joblib.load('model.pkl')加载线性回归模型
  2. 用于x_test_2 = pd.read_csv('x_test.csv').drop(['Unnamed: 0'],axis=1)加载x_test_2
  3. 运行下面的代码来加载解释器
explainer_test = shap.Explainer(lin2.predict, x_test_2)
shap_values_test = explainer_test(x_test_2)
Run Code Online (Sandbox Code Playgroud)
  1. 然后运行partial_dependence_plot查看错误信息:

ValueError:x 和 y 不能大于二维,但具有形状 (2,) 和 (2, 1, 1)

sample_ind = 3
shap.partial_dependence_plot(
    "new_personal_projection_delta", 
    lin.predict, 
    x_test, model_expected_value=True,
    feature_expected_value=True, ice=False,
    shap_values=shap_values_test[sample_ind:sample_ind+1,:]
)
Run Code Online (Sandbox Code Playgroud)
  1. 运行另一个函数来绘制瀑布图以查看错误消息:

例外:waterfall_plot 需要模型输出的标量 base_values 作为第一个参数,但您已传递一个数组作为第一个参数!尝试 shap.waterfall_plot(explainer.base_values[0], value[0], X[0]) 或对于多输出模型尝试 shap.waterfall_plot(explainer.base_values[0], value[0][0], X[ 0])。

shap.plots.waterfall(shap_values_test[sample_ind], max_display=14)

问题:

  1. 为什么我不能运行partial_dependence_plot& shap.plots.waterfall
  2. 我需要对输入进行哪些更改才能运行上述方法?

python plot machine-learning shap

9
推荐指数
1
解决办法
5100
查看次数

Spark 2.0:通过GetOrCreate重新定义SparkSession参数,而不是在WebUI中看到更改

我正在使用Spark 2.0和PySpark.

SparkSession通过GetOrCreate2.0中引入的方法重新定义参数:

此方法首先检查是否存在有效的全局默认SparkSession,如果是,则返回该值.如果不存在有效的全局默认SparkSession,则该方法将创建新的SparkSession并将新创建的SparkSession指定为全局默认值.

如果返回现有SparkSession,则此构建器中指定的配置选项将应用于现有SparkSession.

https://spark.apache.org/docs/2.0.1/api/python/pyspark.sql.html#pyspark.sql.SparkSession.Builder.getOrCreate

到现在为止还挺好:

from pyspark import SparkConf

SparkConf().toDebugString()
'spark.app.name=pyspark-shell\nspark.master=local[2]\nspark.submit.deployMode=client'

spark.conf.get("spark.app.name")
'pyspark-shell'
Run Code Online (Sandbox Code Playgroud)

然后我重新定义SparkSession配置,并承诺在WebUI中查看更改

appName(name)
设置应用程序的名称,该名称将显示在Spark Web UI中.

https://spark.apache.org/docs/2.0.1/api/python/pyspark.sql.html#pyspark.sql.SparkSession.Builder.appName

c = SparkConf()
(c
 .setAppName("MyApp")
 .setMaster("local")
 .set("spark.driver.memory","1g")
 )

from pyspark.sql import SparkSession
(SparkSession
.builder
.enableHiveSupport() # metastore, serdes, Hive udf
.config(conf=c)
.getOrCreate())

spark.conf.get("spark.app.name")
'MyApp'
Run Code Online (Sandbox Code Playgroud)

现在,当我去localhost:4040,我希望看到MyApp一个应用程序名称.

但是,我仍然看到 pyspark-shell application UI

我哪里错了?

提前致谢!

apache-spark apache-spark-sql pyspark pyspark-sql

8
推荐指数
1
解决办法
2597
查看次数

SHAP DeepExplainer 出现 TensorFlow 2.4+ 错误

我尝试使用 DeepExplainer 计算 shap 值,但出现以下错误:

不再支持 keras,请改用 tf.keras

即使我使用 tf.keras?

KeyError Traceback(最近一次调用最后一次)
 在
6 # ...或者直接传递张量
7 解释器 = shap.DeepExplainer((model.layers[0].input, model.layers[-1].output), 背景)
8 shap_values = 解释器.shap_values(X_test[1:5])

C:\ProgramData\Anaconda3\lib\site-packages\shap\explainers\_deep\__init__.py in shap_values(self、X、ranked_outputs、output_rank_order、check_additivity)
122 人被选为“顶级”。
[第 124 章]
C:\ProgramData\Anaconda3\lib\site-packages\shap\explainers\_deep\deep_tf.py 在 shap_values(self、X、ranked_outputs、output_rank_order、check_additivity)
[第 310 章]
[第 311 章]
[第 312 章]
313
第314章

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py 中 __getitem__(self, key)

    第2798章
    第2799章
    第2800章
    第2801章
    第2802章
get_loc 中的 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py(self、key、method、tolerance)
第2646章
第2647章
第2648章
第2649章
第2650章

pandas\_libs\index.pyx 在 pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx 在 pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()

密钥错误:0
import shap …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow tf.keras shap

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

Freidman mse 和 mse 有什么区别?

我正在调查一个GradientBoostingClassifierin sklearn. 然后,我发现有3种标准。Friedman mse、mse、mae。\n提供的描述sklearn是:

\n\n
\n

衡量分割质量的函数。支持的标准为 \xe2\x80\x9cfriedman_mse\xe2\x80\x9d 表示均方误差以及 Friedman 的改进分数,\xe2\x80\x9cmse\xe2\x80\x9d 表示均方误差,以及 \xe2\x80\x9cmae \xe2\x80\x9d 为平均绝对误差。\xe2\x80\x9cfriedman_mse\xe2\x80\x9d 的默认值通常是最好的,因为它在某些情况下可以提供更好的近似值。

\n
\n\n

我不明白有什么不同?\n谁能让我知道?

\n\n

谢谢!

\n

statistics scikit-learn

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

读取股票数据时出错:“DatetimeProperties”对象没有属性“weekday_name”,“NoneType”对象没有属性“to_csv”

我尝试运行代码来获取股票数据,但失败了,显示以下错误:

'DatetimeProperties' 对象没有属性 'weekday_name'
'NoneType' 对象没有属性 'to_csv'

from pandas_datareader import data as web
import os
import pandas as pd
from pandas.testing import assert_frame_equal
Run Code Online (Sandbox Code Playgroud)
def get_stock(ticker, start_date, end_date, s_window, l_window):
    try:
        df = web.get_data_yahoo(ticker, start=start_date, end=end_date)
        df['Return'] = df['Adj Close'].pct_change()
        df['Return'].fillna(0, inplace = True)
        df['Date'] = df.index
        df['Date'] = pd.to_datetime(df['Date'])
        df['Month'] = df['Date'].dt.month
        df['Year'] = df['Date'].dt.year 
        df['Day'] = df['Date'].dt.day
        for col in ['Open', 'High', 'Low', 'Close', 'Adj Close']:
            df[col] = df[col].round(2)
        df['Weekday'] = df['Date'].dt.weekday_name  
        df['Week_Number'] = df['Date'].dt.strftime('%U')
        df['Year_Week'] = df['Date'].dt.strftime('%Y-%U')
        df['Short_MA'] …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-datareader

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

如何在Yarn下限制Hadoop集群中资源的动态自我分配?

在我们在Yarn下运行的Hadoop集群中,我们遇到的问题是,一些"聪明"的人可以通过在pySpark Jupyter笔记本中配置Spark作业来吃掉更大的资源块:

conf = (SparkConf()
        .setAppName("name")
        .setMaster("yarn-client")
        .set("spark.executor.instances", "1000")
        .set("spark.executor.memory", "64g")
        )

sc = SparkContext(conf=conf)
Run Code Online (Sandbox Code Playgroud)

这导致了这样一种情况,即这些人真正挤出其他人不那么"聪明".

有没有办法禁止用户自行分配资源并将资源分配仅留给Yarn?

hadoop hadoop-yarn apache-spark pyspark

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

使用 Shap 获取预测解释的正确方法是什么?

我刚开始使用shap,所以我仍在努力理解它。基本上,我有一个简单的sklearn.ensemble.RandomForestClassifier使用model.fit(X_train,y_train),等等。训练后,我想获得 Shap 值来解释对未见数据的预测。根据文档和其他教程,这似乎是要走的路:

explainer = shap.Explainer(model.predict, X_train)
shap_values = explainer.shap_values(X_test)
Run Code Online (Sandbox Code Playgroud)

然而,这需要很长时间才能运行(我的数据大约需要 18 小时)。如果我将第一行中的 替换为,即model.predictmodel

explainer = shap.Explainer(model, X_train)
shap_values = explainer.shap_values(X_test)
Run Code Online (Sandbox Code Playgroud)

它显着缩短了运行时间(减少至约 40 分钟)。所以这让我想知道在第二种情况下我实际上得到了什么?

重申一下,我只是想能够解释新的预测,而且对我来说这似乎很奇怪,它会如此昂贵 - 所以我确信我做错了什么。

python machine-learning scikit-learn shap

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