标签: data-science

绘制 scikit-learn (sklearn) SVM 决策边界/曲面

我目前正在使用 python 的 scikit 库使用线性内核执行多类 SVM。样本训练数据和测试数据如下:

模型数据:

x = [[20,32,45,33,32,44,0],[23,32,45,12,32,66,11],[16,32,45,12,32,44,23],[120,2,55,62,82,14,81],[30,222,115,12,42,64,91],[220,12,55,222,82,14,181],[30,222,315,12,222,64,111]]
y = [0,0,0,1,1,2,2]
Run Code Online (Sandbox Code Playgroud)

我想绘制决策边界并可视化数据集。有人可以帮忙绘制这种类型的数据。

上面给出的数据只是模拟数据,因此可以随意更改值。如果您至少可以建议要遵循的步骤,那将会很有帮助。提前致谢

python svm python-2.7 scikit-learn data-science

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

如何在python中更改seaborn中的X轴范围?

默认情况下,seaborn 在 distplots 中置换 X 轴范围从 -5 到 35。但我需要用 1 个单位显示 X 轴范围从 1 到 30 的 distplots。我怎样才能做到这一点?

python seaborn data-science

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

使用 Python 在优化曲线上找到“肘点”

我有一个点列表,它们是 kmeans 算法的惯性值。
为了确定最佳集群数量,我需要找到这条曲线开始变平的点。

数据示例

以下是我的值列表的创建和填充方式:

sum_squared_dist = []
K = range(1,50)
for k in K:
    km = KMeans(n_clusters=k, random_state=0)
    km = km.fit(normalized_modeling_data)
    sum_squared_dist.append(km.inertia_)

print(sum_squared_dist)
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到一个点,这条曲线的节距增加(曲线正在下降,所以一阶导数为负)?

我的方法

derivates = []
for i in range(len(sum_squared_dist)):
    derivates.append(sum_squared_dist[i] - sum_squared_dist[i-1])
Run Code Online (Sandbox Code Playgroud)

我想使用肘部方法找到任何给定数据的最佳聚类数。有人可以帮助我如何找到惯性值列表开始变平的点吗?

编辑数据点

[7342.1301373073857, 6881.7109460930769, 6531.1657905495022,  
6356.2255554679778, 6209.8382535595829, 6094.9052166741121, 
5980.0191582610196, 5880.1869867848218, 5779.8957906367368, 
5691.1879324562778, 5617.5153566271356, 5532.2613232619951, 
5467.352265375117, 5395.4493783888756, 5345.3459908298091, 
5290.6769823693812, 5243.5271656371888, 5207.2501206569532, 
5164.9617535255456]
Run Code Online (Sandbox Code Playgroud)

图形: 图形

python numpy scikit-learn data-science

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

阴谋失踪的逆戟鲸

使用 plotly 导出静态图表时出现小问题。

Plotly 无法正确识别我安装了 orca,但仍然存在与缺少 orca 相关的错误。我尝试更改 orca 目录,但它仍然无法正常工作。任何人都知道出了什么问题?

我的代码:

import plotly.graph_objects as go
import orca
import plotly

#%%
fig = go.Figure(data=go.Candlestick(x=pricedata.index,
                    open=pricedata['bidopen'],
                    high=pricedata['bidhigh'],
                    low=pricedata['bidlow'],
                    close=pricedata['bidclose']),)
#%%
fig.show()

#%%
plotly.io.orca.config.executable = r'C:\Users\Kuba\AppData\Local\Programs\Python\Python37\Lib\site-packages\orca'
plotly.io.orca.config.save()

#%%

fig.write_image("images/fig1.png")
Run Code Online (Sandbox Code Playgroud)

这里描述了如何解决它,但它对我不起作用:

https://plot.ly/python/orca-management/#configuring-the-executable

orca 版本是 1.5.1

谢谢。

B.

编辑:

错误消息:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
c:\Users\Kuba\Documents\GitHub\frstalg\FXCM Stuff\LiveMyStrategyNOTEBOOK-20191017.py in 
      1 
----> 2 fig.write_image("images/fig1.png")

~\AppData\Local\Programs\Python\Python37\lib\site-packages\plotly\basedatatypes.py in write_image(self, *args, **kwargs)
   2686         import plotly.io as pio
   2687 
-> 2688         return pio.write_image(self, *args, **kwargs)
   2689 
   2690     # Static …
Run Code Online (Sandbox Code Playgroud)

python orca plotly data-science

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

了解 FeatureHasher、碰撞和向量大小的权衡

在实施机器学习模型之前,我正在预处理我的数据。某些特征具有高基数,例如国家/地区和语言。

由于将这些特征编码为 one-hot-vector 可以产生稀疏数据,我决定研究散列技巧并使用 python 的 category_encoders 像这样:

from category_encoders.hashing import HashingEncoder
ce_hash = HashingEncoder(cols = ['country'])
encoded = ce_hash.fit_transform(df.country)
encoded['country'] = df.country
encoded.head()
Run Code Online (Sandbox Code Playgroud)

查看结果时,我可以看到碰撞

    col_0  col_1  col_2  col_3  col_4  col_5  col_6  col_7 country
0       0      0      1      0      0      0      0      0      US <??
1       0      1      0      0      0      0      0      0      CA.  ? US and SE collides 
2       0      0      1      0      0      0      0      0      SE <??
3       0      0      0      0      0      0 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning data-science

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

pandas 中的新列,其值取决于其他列

我有一个示例数据:

datetime             col1    col2    col3
2021-04-10 01:00:00    25.    50.     50
2021-04-10 02:00:00.   25.    50.     50
2021-04-10 03:00:00.   25.    100.    50
2021-04-10 04:00:00    50.     50.    100
2021-04-10 05:00:00.   100.    100.   100
Run Code Online (Sandbox Code Playgroud)

我想创建一个名为 state 的新列,如果 col2 和 col3 值小于或等于 50,则返回 col1 值,否则返回 col1、column2 和 column3 之间的最大值。

预期输出如下图所示:

datetime             col1    col2    col3. state
2021-04-10 01:00:00    25.    50.     50.   25
2021-04-10 02:00:00.   25.    50.     50.   25
2021-04-10 03:00:00.   25.    100.    50.   100
2021-04-10 04:00:00    50.     50.    100.  100
2021-04-10 05:00:00.   100.    100.   100.  100
Run Code Online (Sandbox Code Playgroud)

python numpy pandas data-science

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

大熊猫数据帧上的分位数归一化

简单来说,如何在Python中对大型Pandas数据帧(可能是2,000,000行)应用分位数归一化?

PS.我知道有一个名为rpy2的包可以在子进程中运行R,在R中使用分位数标准化.但事实是当我使用如下数据集时,R无法计算正确的结果:

5.690386092696389541e-05,2.051450375415418849e-05,1.963190184049079707e-05,1.258362869906251862e-04,1.503352476021528139e-04,6.881341586355676286e-06
8.535579139044583634e-05,5.128625938538547123e-06,1.635991820040899643e-05,6.291814349531259308e-05,3.006704952043056075e-05,6.881341586355676286e-06
5.690386092696389541e-05,2.051450375415418849e-05,1.963190184049079707e-05,1.258362869906251862e-04,1.503352476021528139e-04,6.881341586355676286e-06
2.845193046348194770e-05,1.538587781561563968e-05,2.944785276073619561e-05,4.194542899687506431e-05,6.013409904086112150e-05,1.032201237953351358e-05
Run Code Online (Sandbox Code Playgroud)

编辑:

我想要的是:

鉴于上面显示的数据,如何在https://en.wikipedia.org/wiki/Quantile_normalization中的步骤之后应用分位数归一化.

我在Python中发现了一段代码,声明它可以计算分位数标准化:

import rpy2.robjects as robjects
import numpy as np
from rpy2.robjects.packages import importr
preprocessCore = importr('preprocessCore')


matrix = [ [1,2,3,4,5], [1,3,5,7,9], [2,4,6,8,10] ]
v = robjects.FloatVector([ element for col in matrix for element in col ])
m = robjects.r['matrix'](v, ncol = len(matrix), byrow=False)
Rnormalized_matrix = preprocessCore.normalize_quantiles(m)
normalized_matrix = np.array( Rnormalized_matrix)
Run Code Online (Sandbox Code Playgroud)

代码与代码中使用的示例数据一起工作正常,但是当我使用上面给出的数据对其进行测试时结果出错了.

由于ryp2提供了在python子进程中运行R的接口,我直接在R中测试它,结果仍然是错误的.结果我认为原因是R中的方法是错误的.

python deep-learning data-science

10
推荐指数
2
解决办法
6620
查看次数

pandas.to_numeric - 找出它无法解析的字符串

应用于pandas.to_numeric包含表示数字(以及可能的其他不可解析字符串)的字符串的数据帧列会导致出现如下错误消息:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-66-07383316d7b6> in <module>()
      1 for column in shouldBeNumericColumns:
----> 2     trainData[column] = pandas.to_numeric(trainData[column])

/usr/local/lib/python3.5/site-packages/pandas/tools/util.py in to_numeric(arg, errors)
    113         try:
    114             values = lib.maybe_convert_numeric(values, set(),
--> 115                                                coerce_numeric=coerce_numeric)
    116         except:
    117             if errors == 'raise':

pandas/src/inference.pyx in pandas.lib.maybe_convert_numeric (pandas/lib.c:53558)()

pandas/src/inference.pyx in pandas.lib.maybe_convert_numeric (pandas/lib.c:53344)()

ValueError: Unable to parse string
Run Code Online (Sandbox Code Playgroud)

看看哪个值无法解析会不会有帮助?

python pandas data-cleaning data-science

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

在对社交网络新闻Feed项目进行排名时结合启发式方法

我们有新闻Feed,我们希望根据多个条件向用户展示项目.某些项目将由于因子A而浮出水面,另一项因为因子B而浮出水面,而另一项因为因子C而浮出水面.我们可以为每个因素创建单独的启发式方法,但我们需要将这些启发式方法结合起来以促进最佳考虑每个因素的内容,同时仍然给出每个因素的混合内容.

我们天真的方法是n从每个因子加载顶部,取每个因子中的第一个,并将它们作为饲料的前3个.然后从每个Feed中取第2个,然后在第3个中取出,依此类推.理想情况下,我们会有一些算法可以更智能地对这些Feed项进行排名 - 我们首先考虑的是简单地将三种启发式算法相加并使用得到的组合得分来拉出顶部项目,但不能保证启发式算法是均匀缩放的(或者对于特定用户而言是均匀缩放的,这可能导致一个因素占据馈送中的其他因素.是否有更智能的方式对这些新闻Feed项目进行排名(类似于Facebook在其伪时间顺序新闻Feed中的作用)?

artificial-intelligence machine-learning ranking data-science

10
推荐指数
2
解决办法
299
查看次数

为什么 pandas.DataFrame.sum(axis=0) 返回每列中的值的总和,其中 axis =0 代表行?

在pandas中,axis=0代表行axis=1代表列。因此,要获取 pandas 中每行值的总和,请调用 df.sum(axis=0) 。但它返回每列中的值的总和,反之亦然。为什么???

import pandas as pd
df=pd.DataFrame({"x":[1,2,3,4,5],"y":[2,4,6,8,10]})
df.sum(axis=0)
Run Code Online (Sandbox Code Playgroud)

数据框:

   x   y
0  1   2

1  2   4

2  3   6

3  4   8

4  5  10
Run Code Online (Sandbox Code Playgroud)

输出:

x    15

y    30
Run Code Online (Sandbox Code Playgroud)

预期输出:

0     3

1     6

2     9

3    12

4    15
Run Code Online (Sandbox Code Playgroud)

python data-analysis pandas data-science

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