小编Jae*_*ael的帖子

R- 将某些列从 0 标准化为 1,其值等于 0

我最近开始使用 are,我想扩展我的数据矩阵。我在这里找到了一种方法来在两点之间缩放一个系列

x <- data.frame(step = c(1,2,3,4,5,6,7,8,9,10))
normalized <- (x-min(x))/(max(x)-min(x))
Run Code Online (Sandbox Code Playgroud)

由于我的数据由几列组成,因此我只想使用建议的函数对某些列进行规范化。

normalized <- function(x) (x- min(x))/(max(x) - min(x))
x[] <- lapply(x, normalized) 
Run Code Online (Sandbox Code Playgroud)

此外,我意识到我的数据集中的某些数据点等于 0,因此所提供的公式不再适用。我在这里添加了一个扩展建议:将r 数据帧缩放到 0-1 与 NA 值

normalized <- function(x, ...) {(x - min(x, ...)) / (max(x, ...) - min(x, ...))}
Run Code Online (Sandbox Code Playgroud)

但我不明白我必须如何编码。例如,我想让第 4、5、6 和 10 列标准化,但我想让其余的列保持在数据集中的状态?我在第 4 列中尝试过:

data <- lapply(data[,4],normalized,na.rm= TRUE)
Run Code Online (Sandbox Code Playgroud)

但它没有用(而不是数据框,结果是一个列表:-(...),有谁知道我如何解决它?

非常感谢!

r normalization

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

将图例添加到散点图(PCA)

我是python的新手,发现了这个出色的PCA双线图建议(绘制PCA加载和在sklearn中的双线图中加载(如R的自动绘图))。现在,我尝试为图例中的不同目标添加图例。但是该命令plt.legend()不起作用。

有一个简单的方法吗?例如,来自上面链接的虹膜数据和双标码。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.decomposition import PCA
import pandas as pd
from sklearn.preprocessing import StandardScaler

iris = datasets.load_iris()
X = iris.data
y = iris.target
#In general a good idea is to scale the data
scaler = StandardScaler()
scaler.fit(X)
X=scaler.transform(X)    

pca = PCA()
x_new = pca.fit_transform(X)

def myplot(score,coeff,labels=None):
    xs = score[:,0]
    ys = score[:,1]
    n = coeff.shape[0]
    scalex = 1.0/(xs.max() - xs.min())
    scaley = 1.0/(ys.max() - …
Run Code Online (Sandbox Code Playgroud)

python matplotlib legend pca biplot

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

一种在特定范围内对列值进行分组并将值分配给新列的快速方法

我有一个巨大的数据框。我想根据某个标准对一列中的值进行分组,并向另一列添加一个新值:对于number从 1000 到 1999列中的所有值,为该group列分配 1 。从 2000 年到 2999 年分配 2,以此类推。

为了更好地理解一个例子:我有数据框 df_test

     number
0    1200
1    1300
2    1450
3    1555
4    2300
5    2341
6    2355
7    2800
8    3003
9    4010
Run Code Online (Sandbox Code Playgroud)

我想按照上面的解释对值进行分组,从而得到以下新数据框。

  number  group
0    1200      1
1    1300      1
2    1450      1
3    1555      1
4    2300      2
5    2341      2
6    2355      2
7    2800      2
8    3003      3
9    4010      4
Run Code Online (Sandbox Code Playgroud)

我用以下循环尝试过:

for  i in range(len(df_test)):
    if df_test.number[i] >= 1000 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

标签 统计

python ×2

biplot ×1

dataframe ×1

legend ×1

matplotlib ×1

normalization ×1

pandas ×1

pca ×1

r ×1