标签: data-science

将StandardScaler应用于数据集的部分部分

我想使用来自sklearn的StandardScaler的几个方法.是否可以在我的集合的某些列/功能上使用这些方法,而不是将它们应用于整个集合.

例如,该集合是sklearn:

data = pd.DataFrame({'Name' : [3, 4,6], 'Age' : [18, 92,98], 'Weight' : [68, 59,49]})

   Age  Name  Weight
0   18     3      68
1   92     4      59
2   98     6      49


col_names = ['Name', 'Age', 'Weight']
features = data[col_names]
Run Code Online (Sandbox Code Playgroud)

我适合并改造了 StandardScaler

scaler = StandardScaler().fit(features.values)
features = scaler.transform(features.values)
scaled_features = pd.DataFrame(features, columns = col_names)

       Name       Age    Weight
0 -1.069045 -1.411004  1.202703
1 -0.267261  0.623041  0.042954
2  1.336306  0.787964 -1.245657
Run Code Online (Sandbox Code Playgroud)

但当然名称不是浮点数而是字符串,我不想将它们标准化.我怎样才能应用datadata功能只在列fittransform

python scale pandas scikit-learn data-science

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

在机器学习中我应该使用哪种算法来推荐,基于评级,类型,性别等不同的功能

我正在开发一个网站,它会根据访问者的数据向访问者推荐食谱.我正从他们的个人资料,网站活动和Facebook收集数据.

目前,我有一个像[用户名/用户标识符,食谱,年龄,性别的等级,类型(蔬菜/非蔬菜),菜(意大利/中国..等)的数据.关于上述功能,我想推荐他们没有访问过的新配方.

我已经实现了ALS(交替最小二乘)火花算法.在这里我们必须准备包含[userId,RecipesId,Rating]列的csv.然后我们必须训练这些数据,并通过调整lamdas,Rank,iteration等参数来创建模型.该模型使用pyspark生成推荐

model.recommendProducts(userId,numberOfRecommendations)

ALS算法仅接受三个功能userId,RecipesId,Rating.我无法包括多个功能(如类型,食品,性别等),从该我上面(用户ID,RecipesId,评分)提到开.我想要包含这些功能,然后训练模型并生成建议.

还有其他算法,我可以在其中包含上述参数并生成推荐.

任何帮助将不胜感激,谢谢.

machine-learning pyspark apache-spark-mllib data-science

8
推荐指数
0
解决办法
366
查看次数

如何在linegraph的Y轴上绘制两列单个DataFrame

我有数据帧total_year,其中包含三列(年,动作,喜剧).

total_year

在此输入图像描述

我想在X轴上绘制年份列,在Y轴上绘制(动作和喜剧).

我如何在Y轴上绘制两列(aciton和喜剧).这是我的代码.它在Y轴上仅绘制1列.

total_year[-15:].plot(x='year', y='action' ,figsize=(10,5), grid=True  )
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib pandas data-science

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

Julia导入不相关的包后性能下降

deepcopy一旦我导入一个不相关的包,我的性能就会受到影响CSV.我怎样才能解决这个问题?

import BenchmarkTools
mutable struct GameState
    gameScore::Vector{Int64}
    setScore::Vector{Int64}
    matchScore::Vector{Int64}
    serve::Int64
end
BenchmarkTools.@benchmark deepcopy(GameState([0,0],[0,0],[0,0],-1))

BenchmarkTools.Trial: 
  memory estimate:  1.02 KiB
  allocs estimate:  10
  --------------
  minimum time:     1.585 ?s (0.00% GC)
  median time:      1.678 ?s (0.00% GC)
  mean time:        2.519 ?s (27.10% GC)
  maximum time:     5.206 ms (99.88% GC)
  --------------
  samples:          10000
  evals/sample:     10

import CSV

BenchmarkTools.@benchmark deepcopy(GameState([0,0],[0,0],[0,0],-1))

BenchmarkTools.Trial: 
  memory estimate:  1.02 KiB
  allocs estimate:  10
  --------------
  minimum time:     6.709 ?s (0.00% GC)
  median time:      7.264 ?s (0.00% GC)
  mean …
Run Code Online (Sandbox Code Playgroud)

performance julia data-science

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

在不知道元素总数的情况下从数据流中随机拆分元素

给定“分割比例”,我试图将数据集随机分为两组。问题是,我事先不知道数据集包含多少个项目。我的库从输入流中一个接一个地接收数据,并且期望将数据返回到两个输出流。理想情况下,应将所得的两个数据集精确地拆分为给定的拆分比率。

插图:

                            ??? stream A
 input stream ??? LIBRARY ???
                            ??? stream B
Run Code Online (Sandbox Code Playgroud)

例如,给定分流比30/70,流A有望从输入流中接收30%的元素,而流B剩余的70%。订单必须保留。


到目前为止,我的想法是:

理念1:为每个元素“掷骰子”

一个明显的方法是:对于每个元素,算法都会随机决定该元素应该进入流A还是流B。问题是,结果数据集可能与预期的分割率相去甚远。给定的拆分率50/50,所得数据拆分可能会相去甚远(甚至可能100/0是非常小的数据集)。目的是使所得的分光比尽可能接近所需的分光比。

想法2:使用缓存并随机化缓存的数据

另一个想法是在传递元素之前先缓存固定数量的元素。这将导致缓存1000个元素并改组数据(或其对应的索引以保持顺序稳定),将它们拆分并传递结果数据集。这应该工作得很好,但是我不确定对于大型数据集,随机化是否真的是随机的(我想看分布时会出现模式)。

两种算法都不是最优的,所以希望您能对我有所帮助。


背景

这是关于基于层的数据科学工具的,其中每个层都通过流从上一层接收数据。在传递数据之前,希望该层将数据(向量)拆分为训练和测试集。输入数据的范围可以从几个元素到一个永无止境的数据流(因此,这些流)。该代码是用JavaScript开发的,但是这个问题更多的是关于算法而不是实际的实现。

javascript random algorithm split data-science

8
推荐指数
2
解决办法
218
查看次数

推论分析与预测分析的主要区别

目的

为了澄清具有什么特征或属性,我可以说分析是推论性的或预测性的.

背景

参加一个涉及推理和预测分析的数据科学课程.解释(我理解)是

  • 推理

    从群体中的小样本中引入假设,并且在较大/整个群体中看到它是正确的.

    在我看来,这是概括.我认为诱导吸烟导致肺癌或二氧化碳导致全球变暖是推论分析.

  • 预测

    通过测量对象的变量来描述可能发生的事情.

    我认为,确定哪些特征,行为,评论让人们反应良好,并使总统候选人足够受欢迎成为总统是一种预测分析(这也在课程中被触及).

我对这两个人有点困惑,因为它看起来有灰色区域或重叠.

贝叶斯推断是"推论",但我认为它用于预测,例如垃圾邮件过滤器或欺诈性金融交易识别.例如,银行可以使用先前对变量的观察(例如IP地址,发起人国家,受益人帐户类型等)并预测交易是否是欺诈性的.

我认为相对论是一种推论分析,它从观察和思想实验中引入了一个理论/假设,但它也预测了光的方向会被弯曲.

请帮助我理解什么是必须具有的属性,以将分析分类为推理或预测.

statistics inference machine-learning prediction data-science

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

在matlab prtools中如何设置继续标签?

我有一个带有标签和数据点的数据集,问题是我想得到一个分类问题,我想得到一个linair估算器,例如:

dataset=prdataset([2,4,6,8]',[1,2,3,4]')
testset=prdataset([3,5,7,9]')
classifier=dataset*ldc %should probably be changed?
result=testset*classifier
Run Code Online (Sandbox Code Playgroud)

result.data 现在变成了

ans =

  1.0e-307 *

    0.2225    0.2225    0.2225    0.2225
    0.2225    0.2225    0.2225    0.2225
    0.2225    0.2225    0.2225    0.2225
    0.2225    0.2225    0.2225    0.2225
Run Code Online (Sandbox Code Playgroud)

这是非常错误的.

理想情况下它会[1.5,2.5,3.5,4.5]'接近它.知道如何在PRtools或simulair中做到这一点吗?这是一个linair依赖,但我也希望能够玩其他类型的依赖?

此外,系统的一个巨大奖励是对NaN值有些聪明,它严重地对我的真实数据集进行了严格的评估.

我已经发现了linearr类,但是当我使用它时,我会得到奇怪大小的数据集作为回报,

dataset=prdataset([2,4,6,8]',[1,2,3,4]')
testset=prdataset([3,5,7,9]')
classifier=dataset*linearr%should probably be changed?
result=testset*classifier
Run Code Online (Sandbox Code Playgroud)

给了我价值

    0.1000   -0.3000   -0.7000   -1.1000
   -0.5000   -0.5000   -0.5000   -0.5000
   -1.1000   -0.7000   -0.3000    0.1000
   -1.7000   -0.9000   -0.1000    0.7000
Run Code Online (Sandbox Code Playgroud)

这又是不正确的.

在聊天中,他们建议使用.*而不是*导致使用错误*内部矩阵维度必须同意.

Error in linearr (line 42)
      beta = prinv(X'*X)*X'*gettargets(x);

Error in prmap (line 139)
      [d, varargout{:}] = feval(mapp,a,pars{:}); …
Run Code Online (Sandbox Code Playgroud)

statistics matlab regression machine-learning data-science

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

ValueError:必须仅使用布尔值传递DataFrame

在此数据文件中,使用"REGION"列将美国划分为四个区域.

创建一个查询,查找属于区域1或2的县,其名称以"Washington"开头,其POPESTIMATE2015大于其POPESTIMATE 2014.

此函数应返回带有columns = ['STNAME','CTYNAME']的5x2 DataFrame以及与census_df相同的索引ID(按索引递增排序).

    def answer_eight():
    counties=census_df[census_df['SUMLEV']==50]
    regions = counties[(counties[counties['REGION']==1]) | (counties[counties['REGION']==2])]
    washingtons = regions[regions[regions['COUNTY']].str.startswith("Washington")]
    grew = washingtons[washingtons[washingtons['POPESTIMATE2015']]>washingtons[washingtons['POPESTIMATES2014']]]
    return grew[grew['STNAME'],grew['COUNTY']]

outcome = answer_eight()
assert outcome.shape == (5,2)
assert list (outcome.columns)== ['STNAME','CTYNAME']
print(tabulate(outcome, headers=["index"]+list(outcome.columns),tablefmt="orgtbl"))
Run Code Online (Sandbox Code Playgroud)

错误

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-77-546e58ae1c85> in <module>()
      6     return grew[grew['STNAME'],grew['COUNTY']]
      7 
----> 8 outcome = answer_eight()
      9 assert outcome.shape == (5,2)
     10 assert list (outcome.columns)== ['STNAME','CTYNAME']

<ipython-input-77-546e58ae1c85> in answer_eight()
      1 def answer_eight():
      2     counties=census_df[census_df['SUMLEV']==50]
----> 3     regions = …
Run Code Online (Sandbox Code Playgroud)

python database pandas data-science

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

在Keras中使用sample_weight进行序列标记

我正在处理不平衡类的顺序标签问题,我想用它sample_weight来解决不平衡问题。基本上,如果我训练模型约10个时期,我会得到很好的结果。如果我训练更多的纪元,val_loss会不断下降,但结果会更糟。我猜测该模型只会检测到更多的主导类,从而损害较小的类。

该模型有两个输入,分别用于单词嵌入和字符嵌入,并且输入是从0到6的7种可能的类之一。

使用填充,我的词嵌入输入层的形状为,而词嵌入的输入层的形状(3000, 150)(3000, 150, 15)。我将0.3拆分用于测试和训练数据,这意味着X_train用于单词嵌入(2000, 150)(2000, 150, 15)用于char嵌入。y包含每个单词的正确类,并以7维的单热点向量编码,因此其形状为(3000, 150, 7)y同样分为训练和测试集。然后将每个输入馈入双向LSTM。

输出是一个矩阵,为2000个训练样本的每个单词分配了7个类别之一,因此大小为(2000, 150, 7)


首先,我只是尝试将长度定义sample_weightnp.array7,其中包含每个类的权重:

count = [list(array).index(1) for arrays in y for array in arrays]
count = dict(Counter(count))
count[0] = 0
total = sum([count[key] for key in count])
count = {k: count[key] / total for key in count}
category_weights = np.zeros(7)
for f …
Run Code Online (Sandbox Code Playgroud)

python deep-learning keras data-science

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

在 Altair 中更改图例的大小

我很喜欢 Altair 创建等值分布图!但是,我最大的问题是我无法弄清楚如何更改图例的大小。我已经通读了文档并尝试了几件事无济于事。

这是一个使用Altair 文档中按县划分的失业地图的示例。我添加了一个“配置”层来更改地图和图例上标题的字体大小。请注意“config”中代码的 .configure_legend() 部分。

counties = alt.topo_feature(data.us_10m.url, 'counties')
source = data.unemployment.url

foreground = alt.Chart(counties).mark_geoshape(
    ).encode(
    color=alt.Color('rate:Q', sort="descending",  scale=alt.Scale(scheme='plasma'), legend=alt.Legend(title="Unemp Rate", tickCount=6))
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['rate'])
).project(
    type='albersUsa'
).properties(
    title="Unemployment Rate by County",
    width=500,
    height=300
)

config = alt.layer(foreground).configure_title(fontSize=20, anchor="middle").configure_legend(titleColor='black', titleFontSize=14) 

config
Run Code Online (Sandbox Code Playgroud)

图像应该是这样的:

在此处输入图片说明

如果我像这样更改地图的大小:

counties = alt.topo_feature(data.us_10m.url, 'counties')
source = data.unemployment.url

foreground = alt.Chart(counties).mark_geoshape(
    ).encode(
    color=alt.Color('rate:Q', sort="descending",  scale=alt.Scale(scheme='plasma'), legend=alt.Legend(title="Unemp Rate", tickCount=6))
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['rate'])
).project(
    type='albersUsa'
).properties(
    title="Unemployment Rate by County", …
Run Code Online (Sandbox Code Playgroud)

python gis data-science vega-lite altair

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