我最近开始使用 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)
但它没有用(而不是数据框,结果是一个列表:-(...),有谁知道我如何解决它?
非常感谢!
我是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) 我有一个巨大的数据框。我想根据某个标准对一列中的值进行分组,并向另一列添加一个新值:对于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)