我有一个由 10049972 行 x 19 列组成的数据库。我使用隔离森林来检测异常值,然后创建了一个额外的列,将异常值设置为 -1,我删除了所有包含异常值的行为 -1,然后删除了该列。
我的问题是:我是否需要训练、测试和验证隔离森林才能工作?另外有人可以确认我的代码是否有效吗?
这是我的代码。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.ensemble import IsolationForest
df = pd.read_csv('D:\\Project\\database\\4-Final\\Final After.csv',low_memory=True)
iForest = IsolationForest(n_estimators=100, contamination=0.1 , random_state=42, max_samples=200)
iForest.fit(df.values.reshape(-1,1))
pred = iForest.predict(df.values.reshape(-1,1))
pred=df['anomaly']
df=df.drop(df['anomaly'==-1],inplace=True)
df.to_csv('D:\\Project\\database\\4-Final\\IF TEST.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
谢谢你。
python machine-learning pandas scikit-learn jupyter-notebook
我从 tesnorboard 下载了 CSV 文件,以便自己绘制损失图,因为我希望它们平滑。
这是目前我的代码:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('C:\\Users\\ali97\\Desktop\\Project\\Database\\Comparing Outlier Fractions\\10 Percent (MAE)\\MSE Validation.csv',usecols=['Step','Value'],low_memory=True)
df2 = pd.read_csv('C:\\Users\\ali97\\Desktop\\Project\\Database\\Comparing Outlier Fractions\\15 Percent (MAE)\\MSE Validation.csv',usecols=['Step','Value'],low_memory=True)
df3 = pd.read_csv('C:\\Users\\ali97\\Desktop\\Project\\Database\\Comparing Outlier Fractions\\20 Percent (MAE)\\MSE Validation.csv',usecols=['Step','Value'],low_memory=True)
plt.plot(df['Step'],df['Value'] , 'r',label='10% Outlier Frac.' )
plt.plot(df2['Step'],df2['Value'] , 'g',label='15% Outlier Frac.' )
plt.plot(df3['Step'],df3['Value'] , 'b',label='20% Outlier Frac.' )
plt.xlabel('Epochs')
plt.ylabel('Validation score')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我正在阅读如何平滑图形,我发现这里的另一位成员编写了有关张量板如何平滑图形的代码,但我真的不知道如何在我的代码中实现它。
def smooth(scalars: List[float], weight: float) -> List[float]: # Weight between 0 …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 DBSCAN 来检测离群值,根据我的理解,DBSCAN 输出 -1 作为离群值,1 作为内联值,但是在我运行代码之后,我得到的数字不是 -1 或 1,有人可以吗解释为什么?通过反复试验找到 eps 的最佳值也是正常的,因为我无法找到找到最佳 eps 值的方法。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.cluster import DBSCAN
df = pd.read_csv('Final After Simple Filtering.csv',index_col=None,low_memory=True)
# Dropping columns with low feature importance
del df['AmbTemp_DegC']
del df['NacelleOrientation_Deg']
del df['MeasuredYawError']
#applying DBSCAN
DBSCAN = DBSCAN(eps = 1.8, min_samples =10,n_jobs=-1)
df['anomaly'] = DBSCAN.fit_predict(df)
np.unique(df['anomaly'],return_counts=True)
Run Code Online (Sandbox Code Playgroud)
(array([ -1, 0, 1, ..., 8462, 8463, 8464]),
array([1737565, 3539278, 4455734, ..., 13, 8, 8]))
Run Code Online (Sandbox Code Playgroud)
谢谢。
所以我有一个预测输出功率的 GRU 模型。对于训练数据,我有一个 csv 文件,其中包含 2018 年的数据,而对于我的测试数据,它是另一个 csv 文件,其中包含 2019 年的数据。
我只需要简短地提问。
由于我使用 2 个不同的 csv 文件,一个用于测试,一个用于训练,所以我不需要train_test_split?
说到model.fit,我真的不知道 Validation_data和 之间的区别Validation_split,我应该使用哪个?
我已经分别测试了这 3 行,第二行和第三行给出了相同的精确结果,而第一行给出的结果要低得多 val_loss。
谢谢。
history=model.fit(X_train, y_train, batch_size=256, epochs=25, validation_split=0.1, verbose=1, callbacks=[TensorBoardColabCallback(tbc)])
history=model.fit(X_train, y_train, batch_size=256, epochs=25, validation_data=(X_test, y_test), verbose=1, callbacks=[TensorBoardColabCallback(tbc)])
history=model.fit(X_train, y_train, batch_size=256, epochs=25, validation_data=(X_test, y_test), validation_split=0.1, verbose=1, callbacks=[TensorBoardColabCallback(tbc)])
Run Code Online (Sandbox Code Playgroud)