python 机器学习 – 此处更多的是学习根据已有的数据进行预测未知数据
-
1 numpy函数
- np.mean()
- np.median() // 中值
- np.mode() //众数
- np.std() // 标准差
- np.var() // 方差
- np.percentile() // 百分位数
-
2 matplotlib.pyplot as plt
- plt.scatter(x,y) // 散点图
- plt.hist(x,int) //直方图
-
3 产生随机数据
- x = numpy.random.uniform(0.0, 5.0, 250) // 创建一个包含 250 个介于 0 到 5 之间的随机浮点数的数组
- x = numpy.random.normal(5.0, 1.0, 1000) // 平均值为 5.0,标准差为 1.0,产生1000个这样的数
-
4 画图
- scatter() // 散点图
- plot() // 直线图
-
5 回归有关
- (1) 线性回归
- slope, intercept, r, p, std_err = stats.linregress(x, y)
- k,b,线性回归拟合度
import matplotlib.pyplot as plt from scipy import stats x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86] slope, intercept, r, p, std_err = stats.linregress(x, y) // 求线性回归的相关值 def myfunc(x): return slope * x + intercept mymodel = list(map(myfunc, x)) plt.scatter(x, y) plt.plot(x, mymodel) plt.show()
- (2) 多项式回归
- numpy.polyfit(array_x,array_y,int) 函数 :拟合一个int次的多项式函数,返回一个(系数_array)
- numpy.poly1d(系数_array) //返回一个poly1d,输入变量,可以输出符合此多项式的值
import numpy import matplotlib.pyplot as plt x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) myline = numpy.linspace(1, 22, 100) plt.scatter(x, y) plt.plot(myline, mymodel(myline)) plt.show()
- (3) 多元回归–线性回归
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() // 加载预测线性回归的模型 regr.fit(X, y) // 训练 predictedCO2 = regr.predict([[2300, 1300]]) // 预测 print(predictedCO2) //返回的是一个预测值 print(regr.coef_) // [0.00755095 0.00780526] 返回的是一个系数列表,分别是weight 和 volume的系数,表示,weight每增大1,则co2增加0.00755095
- (4) 标准化的方法
# 标准化方法使用以下公式: # z = (x - u) / s # 其中 z 是新值,x 是原始值,u 是平均值,s 是标准差。 from sklearn.preprocessing import StandardScaler scale = StandardScaler() // 创建一个标准化的对象 df = pandas.read_csv("cars2.csv") X = df[['Weight', 'Volume']] scaledX = scale.fit_transform(X) //标准化X,标准化后的X可以用线性回归的模型进行预测,然后以后进行预测之前都需要进行标准化 # 具体例子见下
import pandas from sklearn import linear_model from sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") X = df[['Weight', 'Volume']] y = df['CO2'] scaledX = scale.fit_transform(X) regr = linear_model.LinearRegression() regr.fit(scaledX, y) scaled = scale.transform([[2300, 1.3]]) predictedCO2 = regr.predict([scaled[0]]) // 标准化返回的是一个list数组 print(predictedCO2)
- (1) 线性回归
-
6 决策树相关
‘’’
下边的数据是"shows.csv"
Age Experience Rank Nationality Go
36 10 9 UK NO
42 12 4 USA NO
23 4 6 N NO
52 4 4 USA NO
43 21 8 USA YES
44 14 5 UK NO
66 3 7 N YES
35 14 9 UK YES
52 13 7 N YES
35 5 9 N YES
24 3 5 USA NO
18 3 7 UK YES
45 9 9 UK YES’’’
import pandas
from sklearn import tree
import pydotplus
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
import matplotlib.image as pltimg
df = pandas.read_csv("shows.csv")
d = {'UK': 0, 'USA': 1, 'N': 2}
df['Nationality'] = df['Nationality'].map(d) //由于决策树的预测只能处理数值型数据,所以这里用map函数将frame处理成数值型数据
d = {'YES': 1, 'NO': 0}
df['Go'] = df['Go'].map(d)
features = ['Age', 'Experience', 'Rank', 'Nationality']
X = df[features]
y = df['Go']
dtree = DecisionTreeClassifier() // 创建决策树对象
dtree = dtree.fit(X, y) // 训练
data = tree.export_graphviz(dtree, out_file=None, feature_names=features) // 决策树生成数据
graph = pydotplus.graph_from_dot_data(data) // 用数据生成图片
graph.write_png('mydecisiontree.png')
img=pltimg.imread('mydecisiontree.png')
imgplot = plt.imshow(img)
plt.show()