机器学习-模型训练

article/2025/9/17 9:41:07

目录

1.逻辑回归模型

2. KNN模型

3.随机森林模型

4.决策树模型 

5.贝叶斯模型

6.支持向量机模型


 步骤:

  1. 导入必要的第三方库
  2. 读取数据
  3. 划分数据集
  4. 可选操作,引入停用词,当作参数传入特征提取器
  5. 特征提取
  6. 提取的向量当作特征传入逻辑回归模型

1.逻辑回归模型

使用TF_IDF提取的向量当作特征传入逻辑回归模型

#首先将用到的包进行导入
import pandas as pd
import numpy as np
import jieba
import re
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn import model_selection
from sklearn import preprocessing#将数据进行读取
data=pd.read_csv('评论汇总-分词后.csv',index_col=0)# 现在是划分数据集
# random_state 取值,这是为了在不同环境中,保证随机数取值一致,以便验证模型的实际效果。
train_x, test_x, train_y, test_y = model_selection.train_test_split(data.分词.values.astype('U'), data.分数.values,test_size=0.1, random_state=1)# 划分完毕,查看数据形状
print(train_x.shape, test_x.shape)
# train_x 训练集数据 test_x 测试集数据  train_y训练集的标签 test_y 测试集的标签
''''''
#定义函数,从哈工大中文停用词表里面,把停用词作为列表格式保存并返回 在这里加上停用词表是因为TfidfVectorizer和CountVectorizer的函数中
#可以根据提供用词里列表进行去停用词
def get_stopwords(stop_word_file):custom_stopwords_list = [line.strip() for line in open(stop_word_file, encoding='UTF-8').readlines()]return custom_stopwords_list#获得由停用词组成的列表
stop_words_file = 'cn_stopwords.txt'
stopwords = get_stopwords(stop_words_file)'''
使用TfidfVectorizer()和 CountVectorizer()分别对数据进行特征的提取,投放到不同的模型中进行实验
'''
# 开始使用TF-IDF进行特征的提取,对分词后的中文语句做向量化。
# 引进TF-IDF的包
TF_Vec = TfidfVectorizer(max_df=0.8,min_df=3,stop_words=frozenset(stopwords))
# 拟合数据,将数据准转为标准形式,一般使用在训练集中
train_x_tfvec = TF_Vec.fit_transform(train_x)
# 通过中心化和缩放实现标准化,一般使用在测试集中
test_x_tfvec = TF_Vec.transform(test_x)# 开始使用CountVectorizer()进行特征的提取。它依据词语出现频率转化向量。并且加入了去除停用词
CT_Vec = CountVectorizer(max_df=0.8,  # 在超过这一比例的文档中出现的关键词(过于平凡),去除掉。min_df=3,  # 在低于这一数量的文档中出现的关键词(过于独特),去除掉。token_pattern=u'(?u)\\b[^\\d\\W]\\w+\\b',  # 使用正则表达式,去除想去除的内容stop_words=frozenset(stopwords))  # 加入停用词)
# 拟合数据,将数据转化为标准形式,一般使用在训练集中
train_x_ctvec = CT_Vec.fit_transform(train_x)
# 通过中心化和缩放实现标准化,一般使用在测试集中
test_x_ctvec = CT_Vec.transform(test_x)'''
使用TF_IDF提取的向量当作数据特征传入模型
'''
#构建模型之前首先将包进行导入
from sklearn import linear_model
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split, GridSearchCV
import time
start_time=time.time()
#创建模型
lr = linear_model.LogisticRegression(penalty='l2', C=1, solver='liblinear', max_iter=1000, multi_class='ovr')
#进行模型的优化,因为一些参数是不确定的,所以就让模型自己在训练中去确定自己的参数 模型的名字也由LR转变为modelmodel = GridSearchCV(lr, cv=3, param_grid={'C': np.logspace(0, 4, 30),'penalty': ['l1', 'l2']})
#模型拟合tf-idf拿到的数据
model.fit(train_x_tfvec,train_y)
#查看模型自己拟合的最优参数
print('最优参数:', model.best_params_)
#在训练时查看训练集的准确率
pre_train_y=model.predict(train_x_tfvec)
#在训练集上的正确率
train_accracy=accuracy_score(pre_train_y,train_y)
#训练结束查看预测 输入验证集查看预测
pre_test_y=model.predict(test_x_tfvec)
#查看在测试集上的准确率
test_accracy = accuracy_score(pre_test_y,test_y)
print('使用TF-IDF提取特征使用逻辑回归,让模型自适应参数,进行模型优化\n训练集:{0}\n测试集:{1}'.format(train_accracy,test_accracy))
end_time=time.time()
print("使用模型优化的程序运行时间为",end_time-start_time)

测试结果如下: 

 使用ConutVector转化的向量作为特征传入逻辑回归模型

#1.首先将要用到的包进行导入
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn import model_selection#2.读取数据
data = pd.read_csv('评论汇总-分词后.csv', index_col=0)#3.划分数据集
'''
备注:将“评论”数据当做X,将“评分”数据当做Y。将数据集划分成训练数据与测试数据,训练数据用来训练机器学习算法,测试数据用于检测通过训练数据训练出来的算法的效果。划分数据集的时候需要用到sklearn中的model_selection中的train_test_split()方法。需要传入的参数为“评论文本”、“文本的评分”(这里的好评还是差评对应的数字)、test_size表示是划分数据集与训练集的比例,根据划分的比例,将数据划分为10等分,测试集占据其中一份。shuffle的作用是在划分数据集时,会将数据顺序打乱。
train_x:训练数据集
test_x:测试数据集
train_y:训练数据集的标签
test_y:测试数据集的标签
random_state:这是为了在不同的环境中,保证随机数取值一致,以便验证模型的效果
'''
train_x,test_x,train_y,test_y = model_selection.train_test_split(data.分词.values.astype('U'),data.分数.values,test_size=0.1,random_state=1)
#划分完毕,查看数据形状
print(train_x.shape,test_y.shape)def get_stopwords(stop_word_file):custom_stopwords_list = [line.strip() for line in open(stop_word_file, encoding='UTF-8').readlines()]return custom_stopwords_list#获得由停用词组成的列表
stop_words_file = 'cn_stopwords.txt'
stopwords = get_stopwords(stop_words_file)
#4. CountVectorizer()分别进行特征提取
#开始使用 CountVectorizer()分别进行特征提取。他可以依据词语出现评率转化向量。并且加入去除停用词,这里数据集已经去除停用词,所以没有使用
CT_Vec =  CountVectorizer(max_df=0.8, #在超过这一比例的文档中出现的关键词(过于平凡),去除掉min_df=3,   #在低于这一数量的文档中出现关键词(过于独特),去除掉token_pattern=u'(?u)\\b[^\\d\\W]\\w+\\b',#使用正则表达式,去除想去的内容stop_words=frozenset(stopwords))
#拟合数据,将数据转化为标准形式,一般在使用在训练集中
train_x_ctvec = CT_Vec.fit_transform(train_x)
#通过中心化和缩放现实标准化,一般使用在测试集中
test_x_ctvec = CT_Vec.transform(test_x)#5.使用ConutVector转化的向量作为特征传入逻辑回归模型
#构造模型之前首先将包进行导入
from sklearn import linear_model
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split,GridSearchCV
import time
start_time = time.time()
#创建模型
print("无优化")
model = linear_model.LogisticRegression(penalty='l2',C=1,solver='liblinear',max_iter=1000,multi_class='ovr')
#进行模型的优化,因为一些参数是不确定的,所以就让模型自己在训练中去确定自己的参数 模型的名字也由LR转为model
'''
model = GridSearchCV(lr, cv=3,param_grid={'C':np.logspace(0,4,30),'penalty':['l1','l2']
})
'''#模型拟合CountVectorizer拿到数据
model.fit(train_x_ctvec,train_y)
#查看自己拟合的最优化参数
#print("最优化参数:",model.best_params_)
#在训练时查看数据集的准确率
pre_train_y = model.predict(train_x_ctvec)
#在训练集上的正确率
train_accuracy = accuracy_score(pre_train_y,train_y)
#训练结束查看预测 输入测试集查看预测
pre_test_y = model.predict(test_x_ctvec)
#查看在测试集上的准确率
test_accuracy = accuracy_score(pre_test_y,test_y)
print("使用CountVectorizer提取特征使用逻辑回归,让模型自适应参数,进行模型优化\n训练集:{0}\n测试集:{1}".format(train_accuracy,test_accuracy))
end_time = time.time()
print("使用模型优化的程序运行时间为:",end_time-start_time)

测试结果如下:

2. KNN模型

#首先将用到的包进行导入
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn import model_selection#将数据进行读取
data=pd.read_csv('评论汇总-分词后.csv',index_col=0)# 现在是划分数据集
# random_state 取值,这是为了在不同环境中,保证随机数取值一致,以便验证模型的实际效果。
train_x, test_x, train_y, test_y = model_selection.train_test_split(data.分词.values.astype('U'), data.分数.values,test_size=0.1, random_state=1)# 划分完毕,查看数据形状
print(train_x.shape, test_x.shape)
# train_x 训练集数据 test_x 测试集数据  train_y训练集的标签 test_y 测试集的标签
#定义函数,从哈工大中文停用词表里面,把停用词作为列表格式保存并返回 在这里加上停用词表是因为TfidfVectorizer和CountVectorizer的函数中
#可以根据提供用词里列表进行去停用词
def get_stopwords(stop_word_file):custom_stopwords_list = [line.strip() for line in open(stop_word_file, encoding='UTF-8').readlines()]return custom_stopwords_list#获得由停用词组成的列表
stop_words_file = 'cn_stopwords.txt'
stopwords = get_stopwords(stop_words_file)'''
使用TfidfVectorizer()和 CountVectorizer()分别对数据进行特征的提取,投放到不同的模型中进行实验
'''
# 开始使用TF-IDF进行特征的提取,对分词后的中文语句做向量化。
# 引进TF-IDF的包
TF_Vec = TfidfVectorizer(max_df=0.8,min_df=3,stop_words=frozenset(stopwords))
# 拟合数据,将数据准转为标准形式,一般使用在训练集中
train_x_tfvec = TF_Vec.fit_transform(train_x)
# 通过中心化和缩放实现标准化,一般使用在测试集中
test_x_tfvec = TF_Vec.transform(test_x)'''
使用KNN模型
'''
import time
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
start_time = time.time()
#创建模型
Kn = KNeighborsClassifier()
#拟合从tf-idf拿到的数据
Kn.fit(train_x_tfvec,train_y)
#在训练时查看训练集的准确率
pre_train_y = Kn.predict(train_x_tfvec)
#在训练集上的正确率
train_accuracy = accuracy_score(pre_train_y,train_y)
#训练结束查看预测 输入测试集查看预测
pre_test_y = Kn.predict(test_x_tfvec)
#查看在测试集上的准确率
test_accuracy = accuracy_score(pre_test_y,test_y)
print('使用TfidfVectorizer提取特征使用KNN分类器的准确率\n训练集:{0}\n测试集:{1}'.format(train_accuracy,test_accuracy))
end_time = time.time()
print('使用KNN分类器的程序运行时间为:',end_time - start_time)

 测试结果如下:

3.随机森林模型

#首先将用到的包进行导入
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn import model_selection#将数据进行读取
data=pd.read_csv('评论汇总-分词后.csv',index_col=0)# 现在是划分数据集
train_x, test_x, train_y, test_y = model_selection.train_test_split(data.分词.values.astype('U'), data.分数.values,test_size=0.1, random_state=1)
# 划分完毕,查看数据形状
print(train_x.shape, test_x.shape)
# train_x 训练集数据 test_x 测试集数据  train_y训练集的标签 test_y 测试集的标签
#定义函数,从哈工大中文停用词表里面,把停用词作为列表格式保存并返回 在这里加上停用词表是因为TfidfVectorizer和CountVectorizer的函数中
'''
使用TfidfVectorizer()对数据进行特征的提取,投放到不同的模型中进行实验
'''
# 开始使用TF-IDF进行特征的提取,对分词后的中文语句做向量化。
# 引进TF-IDF的包
TF_Vec = TfidfVectorizer(max_df=0.8,min_df=3)
# 拟合数据,将数据准转为标准形式,一般使用在训练集中
train_x_tfvec = TF_Vec.fit_transform(train_x)
# 通过中心化和缩放实现标准化,一般使用在测试集中
test_x_tfvec = TF_Vec.transform(test_x)'''
开始训练random forest classifier (随机森林)模型
'''
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import time
start_time = time.time()
#创建模型
Rfc = RandomForestClassifier(n_estimators=8)
#拟合从TfidfVectorizer()中拿到的数据
Rfc.fit(train_x_tfvec,train_y)
#在训练时查看训练集的准确率
pre_train_y = Rfc.predict(train_x_tfvec)
#在训练集上的准确率
train_accuracy = accuracy_score(pre_train_y,train_y)
#在训练时查看测试集的准确率
pre_test_y = Rfc.predict(test_x_tfvec)
#在测试集上的正确率
test_accuracy = accuracy_score(pre_test_y,test_y)
print('使用TfidfVectorizer提取特征使用随机森林分类器的准确率\n训练集:{0}\n测试集:{1}'.format(train_accuracy,test_accuracy))
end_time = time.time()
print('使用随机森林分类器的程序运行时间为:',end_time - start_time)

测试结果如下:

4.决策树模型 

#1.首先将包导入
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import model_selection#2.读取数据
data = pd.read_csv('评论汇总-分词后.csv',index_col=0)#3.划分数据集
train_x, test_x, train_y, test_y = model_selection.train_test_split(data.分词.values.astype('U'),data.分数.values,test_size=0.1,random_state=1)
#划分完毕,查看数据形状
print(train_x.shape,test_x.shape)#4.使用TfidfVectorizer()对数据进行特征提取,放到模型进行训练
#银镜TF-IDF的包
TF_Vec = TfidfVectorizer(max_df=0.8,min_df=3)
#拟合数据,将数据标准化,一般使用在训练集中
train_x_tfvec = TF_Vec.fit_transform(train_x)
#通过中心化和缩放实现标准化,一般使用在测试集中
test_x_tfvec = TF_Vec.transform(test_x)'''
5.开始训练模型
Decison Tree Classifier 决策树
'''
from sklearn import tree
from sklearn.metrics import accuracy_score
import time
start_time = time.time()
#创建模型
Rf = tree.DecisionTreeClassifier()
#拟合从tf-idf拿到的数据
Rf.fit(train_x_tfvec,train_y)
#在训练时查看准确率
pre_train_y = Rf.predict(train_x_tfvec)
#在训练集上的正确率
train_accuracy = accuracy_score(pre_train_y,train_y)
#训练结束查看预测 输入测试集查看预测
pre_test_y = Rf.predict(test_x_tfvec)
#查看在测试集上的准确率
test_accuracy = accuracy_score(pre_test_y,test_y)
print('使用tf提取特征使用决策树分类器的准确率\n训练集:{0}\n测试集:{1}'.format(train_accuracy,test_accuracy))
end_time = time.time()
print('使用决策树分类器程序运行时间为',end_time-start_time)

测试结果如下:

5.贝叶斯模型

#1.首先将包导入
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import model_selection#2.读取数据
data = pd.read_csv('评论汇总-分词后.csv',index_col=0)#3.划分数据集
train_x, test_x, train_y, test_y = model_selection.train_test_split(data.分词.values.astype('U'),data.分数.values,test_size=0.1,random_state=1)
#划分完毕,查看数据形状
print(train_x.shape,test_x.shape)#4.使用TfidfVectorizer()对数据进行特征提取,放到模型进行训练
#银镜TF-IDF的包
TF_Vec = TfidfVectorizer(max_df=0.8,min_df=3)
#拟合数据,将数据标准化,一般使用在训练集中
train_x_tfvec = TF_Vec.fit_transform(train_x)
#通过中心化和缩放实现标准化,一般使用在测试集中
test_x_tfvec = TF_Vec.transform(test_x)'''
5.开始训练模型
Decison Tree Classifier 决策树
'''
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
import time
start_time = time.time()
#创建模型
Bys = MultinomialNB()
#拟合数据
Bys.fit(train_x_tfvec,train_y)
#在训练时查看训练集的准确率
pre_train_y = Bys.predict(train_x_tfvec)
#在训练集上的准确率
train_accuracy = accuracy_score(pre_train_y,train_y)
#训练结束 查看预测 输入测试集查看预测
pre_test_y = Bys.predict(test_x_tfvec)
#查看在测试集上的准确率
test_accuracy = accuracy_score(pre_test_y, test_y)
print('使用tf-idf提取特征值后使用贝叶斯分类器的准确率\n训练集:{0}\n测试集:{1}'.format(train_accuracy,test_accuracy))
end_time = time.time()
print('使用贝叶斯分类器的程序运行时间为:',end_time-start_time)

测试结果如下:

6.支持向量机模型

#1.首先将包导入
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import model_selection#2.读取数据
data = pd.read_csv('评论汇总-分词后.csv',index_col=0)#3.划分数据集
train_x, test_x, train_y, test_y = model_selection.train_test_split(data.分词.values.astype('U'),data.分数.values,test_size=0.1,random_state=1)
#划分完毕,查看数据形状
print(train_x.shape,test_x.shape)#4.使用TfidfVectorizer()对数据进行特征提取,放到模型进行训练
#银镜TF-IDF的包
TF_Vec = TfidfVectorizer(max_df=0.8,min_df=3)
#拟合数据,将数据标准化,一般使用在训练集中
train_x_tfvec = TF_Vec.fit_transform(train_x)
#通过中心化和缩放实现标准化,一般使用在测试集中
test_x_tfvec = TF_Vec.transform(test_x)'''
5.开始训练模型
SVM分类器
'''
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
import time
start_time = time.time()
#创建模型
SVM = SVC(C=1.0,kernel='rbf',gamma='auto')
#拟合数据
SVM.fit(train_x_tfvec,train_y)
#训练集
pre_train_y = SVM.predict(train_x_tfvec)
train_accuracy = accuracy_score(pre_train_y,train_y)
#测试集
pre_test_y = SVM.predict(test_x_tfvec)
test_accuracy = accuracy_score(pre_test_y,test_y)
print('使用Tf-idf提取特征后使用SVM分类器的准确率\n训练集:{0}\n测试集:{1}'.format(train_accuracy,test_accuracy))
end_time = time.time()
print('使用SVM分类器程序运行时间:',end_time-start_time)

测试结果如下:

参考文章:

自然语言处理(NLP)案例--机器学习进行情感分析_Dong_ZH的博客-CSDN博客_nlp案例目录一、数据清洗1.导入必要的库2.创建停用词表3.对句子进行中文分词4.给出文档路径5.将结果输出保存并且打印处理过程二、转换数据格式1.将处理完毕的数据读取查看2.新建pands对象3. 将txt文件中的评论数据按行写入csv文件4.将读取评分数据5.将评分数据以逗号形式分割6.将评分数据作为label按行写入csv文件7.查看数据,并将数据保存为CSV格式三、机器学习部分1.导入必要的第三方库2.读取数据3.划分数据集...https://blog.csdn.net/weixin_44750512/article/details/108486327


http://chatgpt.dhexx.cn/article/JJLritrn.shtml

相关文章

机器学习——训练模型

机器学习——训练模型 线性回归 y ^ h Θ ( x ) Θ ∗ x 其中 Θ 是模型的参数向量,其中包括偏置项 Θ 0 和特征权重 Θ 1 至 Θ n x 是实例的特征向量,包括从 x 0 至 x n , x 0 始终为 0 Θ ∗ x 是向量 Θ 与 x 点积 h Θ 是假设函数,使…

从机器学习到大模型(零基础)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、机器学习 1.监督学习 (1)线性回归模型 (2)多元线性回归模型 (3)二元分类模型 &a…

模型学习

LeNet AlexNet LeNet: 在大的真实数据集上的表现并不尽如⼈意。 1.神经网络计算复杂。 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 神经网络的特征提取:通过学习得到数据的多级表征,并逐级表示越来越抽象的概念或模式。 神经网络发展…

建模师经验分享:模型学习方法!零基础小白必备知识速看

游戏建模初学者大多存在三个大问题,一是工具的使用不够熟练,甚至有些功能还不知道,二是对布线的规范没有太大的要求和了解,三是对游戏制作流程不清晰和板绘下的功力不够,对贴图制作用工少,甚至有些人还处于一直做白膜的阶段。 那么对大多说想要要学游戏建模的学习者想要…

vue3实现抽屉组件中实现上一条和下一条

简单的模拟在用户查看学员详情时,点击上一条和下一条实现数据切换。 实现逻辑:首先将点击的用户的下标传给抽屉组件,然后监听下标的变化,判断是否为最后一个用户,是就设置样式并禁用按钮。上一条和下一条按钮绑定点击…

SQL 获取下一条数据

这里假设有一张员工表,有三个字段 (ID,员工姓名,年龄): CREATE TABLE [dbo].[Employee] ( [ID] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NOT NULL, [Age] [int] NOT NULL ) ON [PRIMARY] 这…

点击下一条

<view class"content"><view class"text-area"><button type"primary" click"next()">点击下一条</button></view><view class"title">{{title}}</view> </view><scrip…

关于MySqL数据库查询当前数据的上一条和下一条数据

如上图所示第14行数据的上一条和下一条&#xff0c;id都不是连续的&#xff0c;因此意图通过id-1或者id1是肯定行不通的&#xff0c;那么怎么办呢&#xff1f;其实也简单就是查询比id14小的元素中的最大值&#xff0c;比id14大的元素中的最小值。 select * from tb_user where…

Mysql取上一条,下一条

2019独角兽企业重金招聘Python工程师标准>>> 根据自增主键还获取。 上一条&#xff1a; SELECT * FROM tableName WHERE Nid<? ORDER by Nid desc 下一条&#xff1a; SELECT * FROM tableName WHERE Nid>? ORDER by Nid asc 使用PDO的可以只获取一条&#…

配置静态路由/下一跳知识

配置静态路由/下一跳地址 下一跳简单说法&#xff1a; *简单的来说&#xff0c;可以从字面理解&#xff0c;下一跳就是指路由器路由选择的下面一次跳跃*拓扑图 先给路由器和PC1,PC2进行配置IP地址 路由器1 路由器2 路由器3 然后在设置下一跳 命令如下&#xff1a; 目标…

软件测试周刊(第24期):最不重要的素质就是智商

这里记录过去一周我们看到的软件测试及周边的行业动态&#xff0c;周五发布。 本周刊开源&#xff08;GitHub: SoftwareTestingWeekly &#xff09;&#xff0c;欢迎提交 issue&#xff0c;投稿或推荐软件测试相关的内容。 科普 Windows11 杨净 梦晨 微软 CEO 纳德拉曾说&am…

面试 Notes|2021 年秋季 Android 弱鸡艰难求职记。。。

扯犊子之前&#xff0c;先放一张面试图吧&#xff1a; 求职&#xff1f;求生&#xff1f;Start… 说来也怪&#xff0c;从入职的第一天就觉得很不舒服&#xff0c;然后慢慢产生离开的念头&#xff0c;随后转变思想&#xff0c;回去打算按照步骤继续学习&#xff0c;避免下次求…

微信官方:刚刚拆散一桩19万元的姻缘

来源:微信派 这种微信电话&#xff0c;你一定还没接到过。 来自云南的张先生最近凑巧接到了一个。 接到微信支付客服电话时&#xff0c;他正在进行一笔19万元的转账。张先生称&#xff0c;他在某视频平台结识一位“女神”&#xff0c;“女神”主动要求加张先生微信&#xff0c;…

苹果新版iOS疯狂致敬安卓和微信,新Mac搭载自研CPU!这届苹果开发者大会料足槽点密...

点击上方“3DCVer”&#xff0c;选择“星标” 干货第一时间送达 当你一夜醒来&#xff0c;无数个关于苹果最新发布会的片段已铺天盖地。 有说苹果自嗨的——因为作为史上最特殊的一次WWDC&#xff0c;库克完全就在空无一人的会场独自演讲。 也有吐槽苹果这次疯狂“致敬”谷歌、…

苹果出现长方形透明框_看到我卧槽!这是苹果史上最疯狂的开发者大会

一场疫情加一场暴乱&#xff0c;让过久了滋润日子的苹果在2020年尝到辛酸... but...收入可减&#xff0c;店面可关&#xff0c;一年一度的 WWDC 大会可不能不办&#xff01; 在此生意艰难之际&#xff0c;没有什么比这管鸡血更能提振消费者的热情了&#xff5e; 按照惯例&#…

疯狂ios讲义之创建cocos2d项目(3)

13.3.3 cocos2d项目结构和代码分析 这一节将向游戏开发者介绍HelloWorld项目的目录结构&#xff0c;以及各个部分是如何协同工作的。通过本节的学习&#xff0c;你会对各个部分之间的联系有个大致的了解。 图13.22显示了HelloWorld项目的项目导航面板。 图13.22 cocos2d项目引…

2016如何突破自我,这么疯狂的事谁敢做

2016一定要做一件令自己疯狂的事&#xff0c;想想自己20多年过去了&#xff0c;却发现没有什么可以回忆的事情是多么的悲催…… 再不疯狂我们就老了…… 2016趁自己还年轻&#xff0c;还有激情&#xff0c;还有动力&#xff0c;放肆的去疯狂…… 一定要疯狂的去玩&#xff0c;…

前有视觉中国后有来电,知识产权勒索为何屡禁不止?

不久前&#xff0c;一张黑洞照片在全网引发了轩然大波&#xff0c;因知识产权被外界熟知的公司“视觉中国”在诸多蓝V的狂轰滥炸下狼狈收场。起因就在于&#xff0c;视觉中国高举知识产权大旗却对外行使近乎于“敲诈勒索”之事。“黑洞事件”后&#xff0c;就在公众以为知产行业…

2016如何突破自我,必做十件疯狂的事

2016一定要做一件令自己疯狂的事&#xff0c;想想自己20多年过去了&#xff0c;却发现没有什么可以回忆的事情是多么的悲催…… 再不疯狂我们就老了…… 2016趁自己还年轻&#xff0c;还有激情&#xff0c;还有动力&#xff0c;放肆的去疯狂…… 一定要疯狂的去玩&#xff0…

[android基础]《疯狂android讲义》重点整理(2)

十、Service与BroadcastReceiver&#xff1a; 1.Service与Activity还有一点相似之处&#xff0c;它们都是从Context派生出来的&#xff0c;因此它们都可调用Context里定义的如getResources()、getContentResolver()等方法。 2.与配置Activity相似的是&#xff0c;配置Service时…