小编Run*_*un2的帖子

为sklearn算法选择random_state

据我所知,random_state在各种sklearn算法中使用它来打破具有相同度量值的不同预测变量(树)之间的联系(例如在中GradientBoosting).但是文档没有澄清或详细说明.喜欢

1)这些种子用于随机数生成的其他地方?比如说RandomForestClassifier,随机数可用于查找一组随机特征来构建预测器.使用子采样的算法可以使用随机数来获得不同的子样本.可以/是同一种子(random_state)在多个随机数生成中扮演一个角色吗?

我主要关心的是

2)这个random_state变量的影响有多远.?这个值能否在预测(分类或回归)方面产生很大的不同.如果是,我应该关注哪种数据集?或者更多的是关于稳定性而不是结果的质量?

3)如果它可以产生很大的不同,如何最好地选择random_state?没有直觉,很难做GridSearch.特别是如果数据集是这样的,一个CV可能需要一个小时.

4)如果动机只是在重复运行中只有稳定的结果/评估我的模型和交叉验证分数,如果我random.seed(X)在使用任何算法之前设置(并使用random_state无),它是否具有相同的效果.

5)假设我random_state在GradientBoosted分类器上使用了一个值,并且我正在交叉验证以找到我的模型的优点(每次都在验证集上得分).一旦满意,我将在整个训练集上训练我的模型,然后将其应用于测试集.现在,完整的训练集比交叉验证中的较小训练集具有更多的实例.因此,random_state与cv循环中发生的情况相比,该值现在可以导致完全不同的行为(特征和个体预测变量的选择).类似于像样本叶子等的事情也可能导致较差的模型,因为设置是CV中的实例数,而实际的实例数更多.这是正确的理解吗?防范这种情况的方法是什么?

machine-learning random-forest scikit-learn

12
推荐指数
1
解决办法
5844
查看次数

Spark DataFrame不尊重模式并将所有内容都视为String

我正面临着一个问题,我现在已经很久没能克服.

  1. 我在Spark 1.4和Scala 2.10上.此时我无法升级(大型分布式基础架构)

  2. 我有一个包含几百列的文件,其中只有两列是字符串,其余都是Long.我想将此数据转换为标签/功能数据帧.

  3. 我已经能够将它变成LibSVM格式.

  4. 我只是无法将其变成标签/功能格式.

原因是

  1. 我无法使用此处显示的toDF() https://spark.apache.org/docs/1.5.1/ml-ensembles.html

    val data = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt").toDF()
    
    Run Code Online (Sandbox Code Playgroud)

    它在1.4中不受支持

  2. 所以我首先将txtFile转换为DataFrame,我使用了这样的东西

    def getColumnDType(columnName:String):StructField = {
    
            if((columnName== "strcol1") || (columnName== "strcol2")) 
                return StructField(columnName, StringType, false)
            else
                return StructField(columnName, LongType, false)
        }
    def getDataFrameFromTxtFile(sc: SparkContext,staticfeatures_filepath: String,schemaConf: String) : DataFrame = {
            val sfRDD = sc.textFile(staticfeatures_filepath)//
            val sqlContext = new org.apache.spark.sql.SQLContext(sc)
             // reads a space delimited string from application.properties file
            val schemaString = readConf(Array(schemaConf)).get(schemaConf).getOrElse("")
    
            // Generate the schema based on the string of schema
            val schema = …
    Run Code Online (Sandbox Code Playgroud)

scala scala-collections apache-spark apache-spark-sql apache-spark-mllib

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

如何在numpy savetxt中格式化,使零仅保存为"0"

我正在将numpy稀疏数组(已删除)保存到csv中.结果是我有一个3GB的csv.问题是95%的细胞是0.0000.我用过fmt='%5.4f'.如何格式化和保存,使零保存为0,非零浮点数以'%5.4f'格式保存?如果我能做到这一点,我相信我可以将3GB降至300MB.

我在用

np.savetxt('foo.csv', arrayDense, fmt='%5.4f', delimiter = ',')
Run Code Online (Sandbox Code Playgroud)

感谢和问候

python numpy

5
推荐指数
2
解决办法
6107
查看次数

在sklearn集合和树中连续变量的分组

谁能告诉我sklearn(Python)中的合奏(如Random Forest,Gradient Boosting,Adaboost)和树(如决策树)如何处理连续变量?在建造树木时,它们是否被视为每个单独的价值?或者它们是否会被自动分类?如果它们被装箱 - 那么逻辑是什么.如果他们没有装箱,我相信我错过了什么.应该有一些智能分箱可用(内置?),它将根据类分布将变量值分类到箱中(至少在二进制分类的情况下)

深入:当我加载我的arff(在高度倾斜的数据集中的数百万行和几百个特征)时,在weka中,并滚动浏览变量/目标(二进制)图,我可以看到它们中的许多都有很强的垃圾箱(目标为正的区域).这些箱子即> = x <= y是否由sklearn中提到的上述型号自动拾取?参见附图(如果你能看到它在变量/目标图中有6条非常细的红线)

对此有任何见解真的很感激

问候

在此输入图像描述

python machine-learning decision-tree scikit-learn ensemble-learning

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

如何为3个通道的输入图像创建layer0输入

您好我遵循http://deeplearning.net/tutorial/code/convolutional_mlp.py代码来实现转神经网络.我输入了通道很重要的图像,因此我希望将3通道特征图作为第0层输入.

所以我需要这样的东西

layer0_input = x.reshape((batch_size, 3, 240, 135)) # width 240, height 135, 3 channels

代替

layer0_input = x.reshape((batch_size, 1, 28, 28)) # 28*28 normalized MNIST gray scale images

将在这里使用

layer0 = LeNetConvPoolLayer(
    rng,
    input=layer0_input,
    image_shape=(batch_size, 3, 240, 135),
    filter_shape=(nkerns[0], 1, 5, 5),
    poolsize=(2, 2)
)
Run Code Online (Sandbox Code Playgroud)

其中x被提供给theano为

 train_model = theano.function(
    [index],
    cost,
    updates=updates,
    givens={
        x: train_set_x[index * batch_size: (index + 1) * batch_size],
        y: train_set_y[index * batch_size: (index + 1) * batch_size]
    }
)
Run Code Online (Sandbox Code Playgroud)

所以 - 我的问题是 - …

theano

3
推荐指数
1
解决办法
1554
查看次数

熊猫数据框选择基数最小的组

我有一个问题,我需要从数据帧中获取一组行,其中一组中的项数超过一定数量(截止)。对于那些小组,我需要坐一些头排和尾排。

我正在使用下面的代码

train = train[train.groupby('id').id.transform(len) > headRows]
groups = pd.concat([train.groupby('id').head(headRows),train.groupby('id').tail(1)]).sort_index()
Run Code Online (Sandbox Code Playgroud)

这可行。但是第一行非常慢:(。30分钟或更长时间。

有什么方法可以使第一行更快?如果我不使用第一行,则第二行的结果中存在重复的索引,这使事情变得混乱。

在此先感谢

注意:我的火车数据框包含约70,000个组,这些组的大小各不相同,超过700,000行。实际上,它来自我的另一个问题,如此处所示:在Python Pandas Dataframe中动态添加列的数据处理。Jeff在此处给出了一个很好的答案,但是如果组大小小于或等于我在连接行时传递给head(parameter)的参数,则失败,如Jeffs的回答:在[31]中:groups = concat .....

python data-processing dataframe pandas

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

为什么每次更改构建参数时 docker 都会重建所有层

我有一个包含很多层的 docker 文件。在文件的顶部我有一些参数,例如

FROM ubuntu:18.04

ARGS USER=test-user
ARGS UID=1000
#ARGS PW=test-user

# Then several Layers which does not use any ARGS. Example
LABEL version="1.0"

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

RUN mkdir ~/mapped-volume

RUN apt-get update && apt-get install -y wget bzip2 ca-certificates build-essential curl git-core htop pkg-config unzip unrar tree freetds-dev vim \
sudo nodejs npm net-tools flex perl automake bison libtool byacc

# And so on 
# And finally towards the end
# Setup User
RUN useradd -m -d /home/${USER} --uid …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

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