Linear Regression 一元回归from sklearn import linear_modelfrom sklearn.metrics import mean_squared_error
1. 准备数据lr_X_data, lr_y_data = datasets.make_regression(n_samples=500,n_features=1,n_targets=1,noise=2) # feature为1维度# 2. 构造训练与测试集lr_X_train, lr_X_test, lr_y_train, lr_y_test = train_test_split(lr_X_data, lr_y_data, test_size=0.3)# 3. 训练模型lr_model = linear_model.LinearRegression()lr_model.fit(lr_X_train, lr_y_train)# 4. 预测数据lr_y_pred = lr_model.predict(lr_X_test)# 5. 评估模型lr_mse = mean_squared_error(lr_y_test, lr_y_pred)print(“mse:”, lr_mse)# 6. 可视化plt.figure(‘Linear Regression’)plt.title(‘Linear Regression’)plt.scatter(lr_X_test, lr_y_test, color=‘lavender’, marker=‘o’)plt.plot(lr_X_test, lr_y_pred, color=‘pink’, linewidth=3)plt.show()
print info mse: 4.131366697554779
▐ Logistic Regression
虽然写着回归,但实际上是一种二分类算法。它将数据拟合到logit函数中,所以称为logit回归。简单来说就是基于一组给定的变量,用logistic function来预测这个事件的概率,给出一个介于0和1之间的输出。具体原理参考:用人话讲明白逻辑回归Logistic regression - 化简可得的文章 - 知乎,下面给出代码的实现。
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
Logistic Regression 二分类
from sklearn import linear_model
1. 准备数据
np.random.seed(123)
logit_X_data = np.random.normal(size=1000)
logit_y_data = (logit_X_data>0).astype(np.float)
logit_X_data[logit_X_data>0]*=5
logit_X_data+=.4*np.random.normal(size=1000)
logit_X_data=logit_X_data[:,np.newaxis]
2. 构造训练与测试集
logit_X_train, logit_X_test, logit_y_train, logit_y_test = train_test_split(logit_X_data, logit_y_data, test_size=0.3)
3. 训练模型
logit_model=linear_model.LogisticRegression(C=1e4) #classifier
logit_model.fit(logit_X_train,logit_y_train)
4. 预测数据
logit_y_pred = logit_model.predict(logit_X_test)
5. 评估模型
logit_acc = logit_model.score(logit_X_test,logit_y_pred)
print(“accuracy:”, logit_acc)
5. 可视化
logit_X_view=np.linspace(-7,7,277)
logit_X_view = logit_X_view[:,np.newaxis]
def model(x):
return 1/(1+np.exp(-x))
loss=model(logit_X_view*logit_model.coef_+logit_model.intercept_).ravel()
plt.figure(‘Logistic Regression’)
plt.title(‘Logistic Regression’)
plt.scatter(logit_X_train.ravel(), logit_y_train, color=‘lavender’,zorder=17)
plt.plot(logit_X_view, loss, color=‘pink’,linewidth=3)
lr_model=linear_model.LinearRegression()
lr_model.fit(logit_X_train,logit_y_train)
plt.plot(logit_X_view, lr_model.predict(logit_X_view), color=‘blue’, linewidth=3)
plt.legend((‘Logistic Regression’,‘Linear Regression’),loc=‘lower right’,fontsize=‘small’)
print info accuracy: 1.0
▐ Naive Bayes
朴素贝叶斯是一种基于贝叶斯定理的分类方法,它会假设一个类中的某个特征与其他特征无关。这个模型不仅非常简单,而且比许多高度复杂的分类方法表现得更好。具体原理参考:朴素贝叶斯算法原理小结 - 刘建平Pinard,下面给出代码的实现。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
Naive Bayes 任务为分类, n_classes=4
import sklearn.naive_bayes as nb
1. 准备数据
nb_X_train, nb_y_train = make_classification(n_features=2, n_redundant=0, n_informative=2,
random_state=1, n_clusters_per_class=1, n_classes=4)
2. 构造训练与测试集
l, r = nb_X_train[:, 0].min() - 1, nb_X_train[:, 0].max() + 1
b, t = nb_X_train[:, 1].min() - 1, nb_X_train[:, 1].max() + 1
n = 1000
grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))
nb_X_test = np.column_stack((grid_x.ravel(), grid_y.ravel()))
3. 训练模型
nb_model = nb.GaussianNB()
nb_model.fit(nb_X_train, nb_y_train)
4. 预测数据
nb_y_pred = nb_model.predict(nb_X_test)
5. 可视化
grid_z = nb_y_pred.reshape(grid_x.shape)
plt.figure(‘Naive Bayes’)
plt.title(‘Naive Bayes’)
plt.pcolormesh(grid_x, grid_y, grid_z, cmap=‘Blues’)
plt.scatter(nb_X_train[:, 0], nb_X_train[:, 1], s=30, c=nb_y_train, cmap=‘pink’)
plt.show()
▐ K-Nearest Neighbors
这是用于分类和回归的机器学习算法(主要用于分类)。它考虑了不同的质心,并使用欧几里得函数来比较距离。接着分析结果并将每个点分类到组中,以优化它,使其与所有最接近的点一起放置。它使用k个最近邻的多数票对数据进行分类预测。具体原来参考:K近邻法(KNN)原理小结 - 刘建平Pinard,下面给出代码的实现。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
Naive Bayes 任务为分类, n_classes=4
import sklearn.naive_bayes as nb
1. 准备数据
nb_X_train, nb_y_train = make_classification(n_features=2, n_redundant=0, n_informative=2,
random_state=1, n_clusters_per_class=1, n_classes=4)
2. 构造训练与测试集
l, r = nb_X_train[:, 0].min() - 1, nb_X_train[:, 0].max() + 1
b, t = nb_X_train[:, 1].min() - 1, nb_X_train[:, 1].max() + 1
n = 1000
grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))
nb_X_test = np.column_stack((grid_x.ravel(), grid_y.ravel()))
3. 训练模型
nb_model = nb.GaussianNB()
nb_model.fit(nb_X_train, nb_y_train)
4. 预测数据
nb_y_pred = nb_model.predict(nb_X_test)
5. 可视化
grid_z = nb_y_pred.reshape(grid_x.shape)
plt.figure(‘Naive Bayes’)
plt.title(‘Naive Bayes’)
plt.pcolormesh(grid_x, grid_y, grid_z, cmap=‘Blues’)
plt.scatter(nb_X_train[:, 0], nb_X_train[:, 1], s=30, c=nb_y_train, cmap=‘pink’)
plt.show()
▐ Decision Tree
遍历树,并将重要特征与确定的条件语句进行比较。它是降到左边的子分支还是降到右边的子分支取决于结果。通常,更重要的特性更接近根,它可以处理离散变量和连续变量。具体原理参考:深入浅出理解决策树算法(一)-核心思想 - 忆臻的文章 - 知乎,下面给出代码的实现。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
K-Nearest Neighbors 任务为分类, n_classes=4
from sklearn.neighbors import KNeighborsClassifier
1. 准备数据
knn_X_train, knn_y_train = make_classification(n_features=2, n_redundant=0, n_informative=2,
random_state=1, n_clusters_per_class=1, n_classes=4)
2. 构造训练与测试集
l, r = knn_X_train[:, 0].min() - 1, knn_X_train[:, 0].max() + 1
b, t = knn_X_train[:, 1].min() - 1, knn_X_train[:, 1].max() + 1
n = 1000
grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))
knn_X_test = np.column_stack((grid_x.ravel(), grid_y.ravel()))
3. 训练模型
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
独家面经总结,超级精彩
本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!
Java面试准备
准确的说这里又分为两部分:
- Java刷题
- 算法刷题
Java刷题:此份文档详细记录了千道面试题与详解;
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
12426577308)]
[外链图片转存中…(img-yc1BUlpG-1712426577308)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算