Python机器学习
Posted
技术标签:
【中文标题】Python机器学习【英文标题】:Python Machine Learning 【发布时间】:2019-05-14 09:39:46 【问题描述】:我正在尝试预测我的服务器负载,但我得到的准确率低于 10%。我正在使用线性回归来预测数据,有谁能帮帮我吗?
ps,csv 文件包含日期和时间,所以我将两者都转换为整数。不确定我做得对吗
这些是我的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import mpl_toolkits
import imp
from sklearn.preprocessing import LabelEncoder
from sklearn import preprocessing
data = pd.read_csv(".....\\Machine_Learning_Serious\\Server_Prediction\\testing_server.csv")
describe = data.describe()
data_cleanup = "Timestamp":'AM': 0, 'PM': 1,
"Function":'ccpl_db01': 0, 'ccpl_fin01': 1, 'ccpl_web01': 2,
"Type": '% Disk Time': 0, 'CPU Load': 1, 'DiskFree%_C:': 2, 'DiskFree%_D:': 3, 'DiskFree%_E:': 4, 'FreeMemory': 5, 'IIS Current Connections': 6, 'Processor Queue Length': 7, 'SQL_Buffer cache hit ratio': 8, 'SQL_User Connections': 9
data.replace(data_cleanup,inplace = True)
final_data = data.head()
#print(final_data)
from sklearn.linear_model import LinearRegression
reg = LinearRegression()
labels = data['Data']
train1 = data.drop(['Data'], axis = 1)
from sklearn.model_selection import train_test_split
from sklearn import ensemble
x_train , x_test , y_train , y_test = train_test_split(train1, labels, test_size = 0.25, random_state = 2)
#clf = ensemble.GradientBoostingRegressor(n_estimators= 400 , max_depth = 5,min_samples_split = 2, learning_rate = 0.1,loss='ls')
fitting = reg.fit(x_train,y_train)
score = reg.score(x_test,y_test)
主要目标是预测正确的负载,但现在我离得太远了。
【问题讨论】:
也许您的数据和标签之间根本没有线性连接? @ChristianKönig,嗯……我怎么知道是线性连接还是没有线性连接?有没有办法检查一下? 嗯,这就是机器学习的重点,不是吗?在您的数据中查找连接。如果有一种简单的检查方法,为什么要进行线性回归? @ChristianKönig,嗯……我现在明白了……谢谢! 【参考方案1】:也许先做一些探索性数据分析,看看是否能找出目标变量和特征之间的模式?
最好从日期/时间变量中提取一些特征,而不是将它们用作整数(如 weekday_or_not、seasons 等)
您还可以尝试转换您的特征(log、sqrt)以查看分数是否有所提高。
我还建议您尝试一个简单的随机森林/xgboost 模型来检查它与线性回归模型的表现如何
【讨论】:
以上是关于Python机器学习的主要内容,如果未能解决你的问题,请参考以下文章
《Python机器学习时间指南》Python机器学习的生态系统
机器学习资料《分布式机器学习算法理论与实践》+《白话机器学习算法》+《Python机器学习基础教程》