# 导入必要的库
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
# 准备数据
x_data = [1.0], [2.0], [3.0]
y_data = [0], [0], [1]
# 创建并拟合逻辑回归模型
model = LogisticRegression()
model.fit(x_data, y_data )
# 在测试集上进行预测
y_pred = model.predict(x_data)# predict预测的是值,可能是:[0,0,1]
# 计算准确率
accuracy = accuracy_score(y_data, y_pred)
print("Accuracy:", accuracy)
# 绘制决策边界
x = np.linspace(0, 10, 200).reshape(-1,1)#变成200行,1列
y = model.predict_proba(x)[:, 1]#predict_proba预测的是类别为1的概率值,取值范围为:[0,1]概率值[0.2,0.3,0.8]
plt.plot(x, y)
plt.plot([0, 10], [0.5, 0.5], c='r')#在概率=0.5时画一条红色直线;概率<0.5认为类别为0;概率>=0.5认为类别为1.
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()
相关文章
- 12-08【机器学习算法】——逻辑回归-代码
- 12-08深入浅出机器学习中的梯度下降算法
- 12-08【机器学习】入门机器学习:从理论到代码实践
- 12-083.27【机器学习】第五章作业&代码实现
- 12-08【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法-线性回归的从零开始实现
- 12-08机器学习算法模型系列——Adam算法
- 12-08大数据-215 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn cluster.cluster_centers_ inertia_
- 12-08蓝桥杯c++算法学习【1】之枚举与模拟(卡片、回文日期、赢球票、既约分数:::非常典型的比刷例题!!!)- 对于一个8位数的整型日期,可以通过除法和取余运算来获取它的每一位数字。比如: 若整数date 的值为20050511,它从高到低的每一数位上的数可以通过下列方法得到。 • data / 10000000 = 2; • data / 1000000 % 10 = 0; • data / 100000 % 10 = 0; • data / 10000 % 10 = 5; • data / 1000 % 10 = 0; • data / 100 % 10 = 5; • data / 10 % 10 = 1; • data % 10 = 1。 对于本题,若用a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8] 分别存储每一位,则一个 回文日期须满足: 一个ABABBABA 型回文日期须满足以下条件。 a[1] = a[3] = a[6] = a[8];a[2] = a[4] = a[5] = a[7]. 对于一个日期字符串,可以直接通过下标来获取它的每一位数字。例如,string date = “20050511”,它从高到低的每一位分别可以通过data[0],data[1],...,data[7] 得到。判断回文日期及ABABBABA型回文日期的方式和上述方法类似。 不难看出,字符串获取日期的每一位数字是要比整型简单的,所以在判断回文日期及 ABABBABA 型回文日期时可以将整型转换为字符串来操作,如参考代码所示。 #include <bits/stdc++.h> using namespace std; int date = 20050511; string s = to_string(date); // 将整型转换为字符串, s = "20050511" // 判断回文日期 bool check1(int date) { string s = to_string(date); if (s[0] == s[7] && s[1] == s[6] && s[2] == s[5] && s[3] == s[4]) return true; return false; } // 判断 ABABBABA 型回文日期 bool check2(int date) { string s = to_string(date); if (s[0] == s[2] && s[0] == s[5] && s[0] == s[7] && s[1] == s[3] && s[1] == s[4] && s[1] == s[6]) return true; return false; } 2. 如何枚举日期 对于一个整型日期,可以用最简单的方式枚举,即令该日期不断+1,直到出现满足ABAB BABA 型的回文日期。 但这样存在一个问题:会枚举出许多不合法的日期(如20209999)。为此,我们需要对 日期进行合法性判断:设y,m,d分别表示年、月、日,month[i]表示第i个月的天数,那么当m12或dmonth[m]时日期不合法,反之日期合法,如参考代码所示。 #include <iostream> #include <string> using namespace std; int month[13] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool check(int date) { string s = to_string(date); //stoi->将字符串转为整型 int y = stoi(s.substr(0, 4)), m = stoi(s.substr(4, 2)), d = stoi(s.substr(6, 2)); if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) month[2] = 29; else month[2] = 28; if (m < 1 || m > 12 || d < 1 || d > month[m]) return false; return true; } int main { int date = 20050511; for (int i = date + 1;; i++) { if (!check(i)) continue; // 找到下一个有效日期后,可以在这里进行进一步处理 // 例如,检查是否是回文日期或 ABABBABA 型回文日期 cout << "Next valid date: " << i << endl; break; } return 0; } 不过这样的枚举量是相当大的,要在比赛中完成本题要求的所有测试数据不太现实。 那么,还有什么枚举方法呢? 可以直接枚举合法日期。枚举合法日期只需模拟日期的变化规律即可,对应参考代码如 下所示。 #include <iostream> using namespace std; int month[13] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main { int date = 20050511; int y = date / 10000, m = date / 100 % 100, d = date % 100; for (int i = y;; i++) { if (i % 400 == 0 || (i % 100 != 0 && i % 4 == 0)) month[2] = 29; // 闰年2月有29天 else month[2] = 28; int j = (i == y) ? m : 1; // 如果是i = y,则月份从m开始枚举,否则从1开始枚举 for (; j <= 12; j++) { int k = (i == y && j == m) ? d : 1; // 如果i = y并且j = m,则日从d开始枚举,否则从1开始枚举 for (; k <= month[j]; k++) { int new_date = i * 10000 + j * 100 + k; // 在这里可以进行进一步处理,例如检查是否是回文日期或ABABBABA型回文日期 cout << "Next valid date: " << new_date << endl; return 0; // 找到第一个有效日期后退出程序 } } } return 0; } 综上 :
- 12-08gan的所有种类,人工智能 机器学习,gan的所有算法
- 12-08机器学习(三)——决策树(附核心思想、重要算法、概念(信息熵、基尼指数、剪枝处理)及Python源码)