ML之LoR:LoR之二分类之线性决策算法实现根据两课成绩分数~预测期末通过率(合格还是不合格)

简介: ML之LoR:LoR之二分类之线性决策算法实现根据两课成绩分数~预测期末通过率(合格还是不合格)

输出结果


LoR之二分类算法实现预测期末考试成绩合格还是不合格

image.png


LoR回归函数


image.png



代码设计


import pandas as pd

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

from scipy.optimize import minimize

from sklearn.preprocessing import PolynomialFeatures

pd.set_option('display.notebook_repr_html', False)

pd.set_option('display.max_columns', None)

pd.set_option('display.max_rows', 150)

pd.set_option('display.max_seq_items', None)

import seaborn as sns

sns.set_context('notebook')

sns.set_style('white')

def loaddata(file, delimeter):

   data = np.loadtxt(file, delimiter=delimeter)

   print('Dimensions: ',data.shape)

   print(data[1:6,:])

   return(data)

def plotData(data, label_x, label_y, label_pos, label_neg, axes=None):

   # 获得正负样本的下标(即哪些是正样本,哪些是负样本)

   neg = data[:,2] == 0

   pos = data[:,2] == 1

 

   if axes == None:

       axes = plt.gca()

   axes.scatter(data[pos][:,0], data[pos][:,1], marker='^', c='b', s=60, linewidth=2, label=label_pos)

   axes.scatter(data[neg][:,0], data[neg][:,1], c='y', s=60, label=label_neg)

   axes.set_xlabel(label_x)

   axes.set_ylabel(label_y)

   axes.legend(frameon= True, fancybox = True);

data = loaddata('data1.txt', ',')

X = np.c_[np.ones((data.shape[0],1)), data[:,0:2]]

y = np.c_[data[:,2]]

plotData(data, 'Exam 1 score', 'Exam 2 score', 'Pass', 'Fail')  #绘图

#定义sigmoid函数

def sigmoid(z):

   return(1 / (1 + np.exp(-z)))

#定义损失函数

def costFunction(theta, X, y):

   m = y.size

   h = sigmoid(X.dot(theta))

 

   J = -1*(1/m)*(np.log(h).T.dot(y)+np.log(1-h).T.dot(1-y))

           

   if np.isnan(J[0]):

       return(np.inf)

   return(J[0])

#求解梯度

def gradient(theta, X, y):

   m = y.size

   h = sigmoid(X.dot(theta.reshape(-1,1)))

 

   grad =(1/m)*X.T.dot(h-y)

   return(grad.flatten())

initial_theta = np.zeros(X.shape[1])

cost = costFunction(initial_theta, X, y)

grad = gradient(initial_theta, X, y)

print('Cost: \n', cost)

print('Grad: \n', grad)

#最小化损失函数(梯度下降),直接调用scipy里面的最小化损失函数的minimize函数

res = minimize(costFunction, initial_theta, args=(X,y), method=None, jac=gradient, options={'maxiter':400})

#进行预测

def predict(theta, X, threshold=0.5):

   p = sigmoid(X.dot(theta.T)) >= threshold

   return(p.astype('int'))

# 第一门课45分,第二门课85分的同学,拿到通过考试的概率

sigmoid(np.array([1, 45, 85]).dot(res.x.T))

p = predict(res.x, X)

print('Train accuracy {}%'.format(100*sum(p == y.ravel())/p.size))

#绘制二分类决策边界

plt.scatter(45, 85, s=60, c='r', marker='v', label='(45, 85)')

plotData(data, 'Exam 1 score', 'Exam 2 score', 'Pass', 'Failed')

x1_min, x1_max = X[:,1].min(), X[:,1].max(),

x2_min, x2_max = X[:,2].min(), X[:,2].max(),

xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max), np.linspace(x2_min, x2_max))

h = sigmoid(np.c_[np.ones((xx1.ravel().shape[0],1)), xx1.ravel(), xx2.ravel()].dot(res.x))

h = h.reshape(xx1.shape)

plt.contour(xx1, xx2, h, [0.5], linewidths=1, colors='b');


 


相关文章
|
2月前
|
机器学习/深度学习 算法
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
48 0
|
2月前
|
算法 C# 索引
C#线性查找算法
C#线性查找算法!
|
4月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
136 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
3月前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
3月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
47 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
2月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
4月前
|
机器学习/深度学习 算法 Java
[算法与数据结构] 谈谈线性查找法~
该文章详细介绍了线性查找法的基本概念与实现方法,通过Java代码示例解释了如何在一个数组中查找特定元素,并分析了该算法的时间复杂度。
|
3月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
45 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【9月更文挑战第12天】决策树算法作为机器学习领域的一颗明珠,凭借其直观易懂和强大的解释能力,在分类与回归任务中表现出色。相比传统统计方法,决策树通过简单的分支逻辑实现了数据的精准分类。本文将借助Python和scikit-learn库,以鸢尾花数据集为例,展示如何使用决策树进行分类,并探讨其优势与局限。通过构建一系列条件判断,决策树不仅模拟了人类决策过程,还确保了结果的可追溯性和可解释性。无论您是新手还是专家,都能轻松上手,享受机器学习的乐趣。
64 9
|
3月前
|
机器学习/深度学习 人工智能 算法
【机器学习】决策树算法
【机器学习】决策树算法

热门文章

最新文章