python – 根据已有的数据进行预测未知数据

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)
    
  • 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()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ahao6666666/article/details/113550179
今日推荐