java核心面试精讲,9种常用的机器学习算法实现,腾讯Java开发面试凉凉

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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

image

image

image

image

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

image

image

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

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、安卓逆向、云计算

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值